如何在另一个方法中使用findViewById变量。Java Android
我对编程非常陌生,如果我的代码很难看,我很抱歉 我正在尝试创建一个类似菜单的屏幕,它有左右箭头按钮,可以更改显示的图片。我想让它成为这样,当你在第一个图像上的左箭头不见了,当在最后一个图像上显示右箭头不见了 我尝试了很多不同的方法,但最终总是需要一个变量,它无法解决。在发布的代码中,错误出现在switch语句中,我尝试用其他方法对其进行编码,未解决的变量错误将出现在onClickListener中 你不必为我编写代码,只要让我知道我缺少什么概念,我就会研究它 谢谢如何在另一个方法中使用findViewById变量。Java Android,java,android,variables,switch-statement,findviewbyid,Java,Android,Variables,Switch Statement,Findviewbyid,我对编程非常陌生,如果我的代码很难看,我很抱歉 我正在尝试创建一个类似菜单的屏幕,它有左右箭头按钮,可以更改显示的图片。我想让它成为这样,当你在第一个图像上的左箭头不见了,当在最后一个图像上显示右箭头不见了 我尝试了很多不同的方法,但最终总是需要一个变量,它无法解决。在发布的代码中,错误出现在switch语句中,我尝试用其他方法对其进行编码,未解决的变量错误将出现在onClickListener中 你不必为我编写代码,只要让我知道我缺少什么概念,我就会研究它 谢谢 package com
package com.mystuff.mymenu;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
public class PictureMenu extends Activity implements OnClickListener{
int setView = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picture_menu);
menuSet(setView);
ImageButton right = (ImageButton) findViewById(R.id.rightButton);
ImageButton left = (ImageButton) findViewById(R.id.leftButton);
right.setOnClickListener(this);
left.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.rightButton){
setView ++;
menuSet(setView);
if(v.getId() == R.id.rightButton){
setView ++;
menuSet(setView);
}
}
}
private void menuSet(int setView) {
ImageView picture1 = (ImageView) findViewById(R.id.picture1);
ImageView picture2 = (ImageView) findViewById(R.id.picture2);
ImageView picture3 = (ImageView) findViewById(R.id.picture3);
ImageView picture4 = (ImageView) findViewById(R.id.picture4);
switch(setView){
case 1:
left.setVisibility(View.GONE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.VISIBLE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
case 2:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.VISIBLE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
case 3:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.VISIBLE);
picture4.setVisibility(View.GONE);
break;
case 4:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.GONE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.VISIBLE);
break;
default:
left.setVisibility(View.GONE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.VISIBLE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
}
}
}
这应该起作用:
package com.mystuff.mymenu;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
public class PictureMenu extends Activity implements OnClickListener{
private ImageButton right, left;
int setView = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picture_menu);
menuSet(setView);
right = (ImageButton) findViewById(R.id.rightButton);
left = (ImageButton) findViewById(R.id.leftButton);
right.setOnClickListener(this);
left.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.rightButton){
setView ++;
menuSet(setView);
if(v.getId() == R.id.rightButton){
setView ++;
menuSet(setView);
}
}
}
private void menuSet(int setView) {
switch(setView){
case 1:
left.setVisibility(View.GONE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.VISIBLE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
case 2:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.VISIBLE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
case 3:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.VISIBLE);
picture4.setVisibility(View.GONE);
break;
case 4:
left.setVisibility(View.VISIBLE); //ERROR left cannot be resolved
right.setVisibility(View.GONE); //ERROR right cannot be resolved
picture1.setVisibility(View.GONE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.VISIBLE);
break;
default:
left.setVisibility(View.GONE); //ERROR left cannot be resolved
right.setVisibility(View.VISIBLE); //ERROR right cannot be resolved
picture1.setVisibility(View.VISIBLE);
picture2.setVisibility(View.GONE);
picture3.setVisibility(View.GONE);
picture4.setVisibility(View.GONE);
break;
}
}
}
您的问题在于,右侧和左侧是onCreate()方法的本地对象,无法从该方法外部看到。如果您想让它们成为类范围,请使它们成为类属性,例如:
public class PictureMenu extends Activity implements OnClickListener {
int setView = 1;
ImageButton right, left;
...
protected void onCreate(Bundle savedInstanceState) {
...
right = (ImageButton) findViewById(R.id.rightButton);
left = (ImageButton) findViewById(R.id.leftButton);
...
}
另一个解决方案是将它们作为参数传递给menuSet()
首先,你应该学习正确的编程,特别是什么是。
此外,正确格式化代码有助于轻松发现作用域