java - 如何在另一种方法中使用 findViewById 变量。 Java 安卓

标签 java android variables switch-statement findviewbyid

我是编程新手,正在自学,如果我的代码难看,我深表歉意。

我正在尝试创建一个类似屏幕的菜单,它具有左右箭头按钮,可以更改显示的图片。我想做到这一点,当您在第一张图片上显示左箭头时,在显示最后一张图片时,右箭头消失。

我已经尝试过很多不同的方法来做到这一点,但最终总是需要一个无法解析的地方的变量。在发布的代码中,错误出现在 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;
}       


}



}

最佳答案

您的问题在于 rightleftonCreate() 方法的局部值,无法从该方法外部看到。如果你想要它们在类范围内,使它们成为类属性,例如:

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/

相关文章:

java - 赋值给变量没有效果?

Android:我可以上传到市场的最大应用程序大小是多少?

java - 更改 Eclipse 中的返回类型错误

java - Android 使用 opencv 对静态图像进行人脸检测?

Java:字符串操作。获取 URL 中的最后一个子路径

android - 使用 ActionBarSherlock 向 ActionBar 添加按钮

java - 如何将NameValuePair传递给android中的另一个 Activity ?

javascript - 如何在 PHP 中访问我的 Javascript 变量?

php - 我可以提取函数返回值吗?

MySQL:等于冒号=:在更新语句中意味着什么?