我是编程新手,正在自学,如果我的代码难看,我深表歉意。
我正在尝试创建一个类似屏幕的菜单,它具有左右箭头按钮,可以更改显示的图片。我想做到这一点,当您在第一张图片上显示左箭头时,在显示最后一张图片时,右箭头消失。
我已经尝试过很多不同的方法来做到这一点,但最终总是需要一个无法解析的地方的变量。在发布的代码中,错误出现在 switch 语句中,我尝试用其他方式对其进行编码, Unresolved 变量错误将出现在 onClickListener 中。
您不必为我编写代码,只需让我知道我缺少什么概念,我会研究它。
谢谢
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;
}
}
}
最佳答案
您的问题在于 right 和 left 是 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()
恕我直言,你应该首先学习正确的编程,特别是什么 variable scope是。 此外,正确格式化您的代码有助于轻松发现范围。
关于java - 如何在另一种方法中使用 findViewById 变量。 Java 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228392/