Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在另一个方法中使用findViewById变量。Java Android_Java_Android_Variables_Switch Statement_Findviewbyid - Fatal编程技术网

如何在另一个方法中使用findViewById变量。Java Android

如何在另一个方法中使用findViewById变量。Java Android,java,android,variables,switch-statement,findviewbyid,Java,Android,Variables,Switch Statement,Findviewbyid,我对编程非常陌生,如果我的代码很难看,我很抱歉 我正在尝试创建一个类似菜单的屏幕,它有左右箭头按钮,可以更改显示的图片。我想让它成为这样,当你在第一个图像上的左箭头不见了,当在最后一个图像上显示右箭头不见了 我尝试了很多不同的方法,但最终总是需要一个变量,它无法解决。在发布的代码中,错误出现在switch语句中,我尝试用其他方法对其进行编码,未解决的变量错误将出现在onClickListener中 你不必为我编写代码,只要让我知道我缺少什么概念,我就会研究它 谢谢 package com

我对编程非常陌生,如果我的代码很难看,我很抱歉

我正在尝试创建一个类似菜单的屏幕,它有左右箭头按钮,可以更改显示的图片。我想让它成为这样,当你在第一个图像上的左箭头不见了,当在最后一个图像上显示右箭头不见了

我尝试了很多不同的方法,但最终总是需要一个变量,它无法解决。在发布的代码中,错误出现在switch语句中,我尝试用其他方法对其进行编码,未解决的变量错误将出现在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;
}       


}



}
这应该起作用:

    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()

首先,你应该学习正确的编程,特别是什么是。 此外,正确格式化代码有助于轻松发现作用域