Android Studio-setEnabled错误:NullPointerException

问题描述 投票:1回答:2

//我的英语可能有一些语法错误:)//

我试图将视图设置为Enabled(false),但是它一直给我这个错误:

原因:java.lang.NullPointerException:尝试调用虚拟null上的方法'void android.widget.Button.setEnabled(boolean)'对象参考

我不知道的是,即使它们在“ ccl_stage11 [] []”中使用相同的语法为“ for”,但错误并未在“ ccl_stage11 [] []”处发生,而是在“ vtl_stage11”和“ hrl_stage11 [] []”处发生。同样的方式。

我试图在setEnabled部分展开'for'循环,但是没有用。谁能帮我解决这个问题?这是与此错误相关的代码。

public class Stage1Activity1 extends AppCompatActivity {

    Button[][] ccl_stage11 = new Button[4][4];
    Button[][] hrl_stage11 = new Button[4][4];
    Button[][] vtl_stage11 = new Button[4][4];



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stage11);


        buttonSettings();
}
 protected void buttonSettings() {


        int k = 0;
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 3; j++) {
                ccl_stage11[i][j] = findViewById(R.id.ccl_stage11_11 + k);
                ccl_stage11[i][j].setEnabled(false);
                k++;
            }
        }
        for (int i = 0; i <= 3; i++) {
            for (int j = 0; j <= 3; j++) {
                vtl_stage11[i][j] = findViewById(R.id.vtl_stage11_00 + k);
                hrl_stage11[i][j] = findViewById(R.id.hrl_stage11_00 + k);
                k++;
            }
        }
        for(int i=0;i<=3;i++){
            for (int j =0;j<=3;j++){
                vtl_stage11[i][j].setEnabled(false);
                hrl_stage11[i][j].setEnabled(false);
            }
        }
        ccl_stage11[1][3].setEnabled(true);
        ccl_stage11[3][1].setEnabled(true);


    }

错误发生在

for(int i=0;i<=3;i++){
    for (int j =0;j<=3;j++){
        vtl_stage11[i][j].setEnabled(false);
        hrl_stage11[i][j].setEnabled(false);
    }
}
java android
2个回答
0
投票

在执行任何操作之前,请先检查null

for(int i=0;i<=3;i++){
    for (int j =0;j<=3;j++){

        // add this condition!
        if(vtl_stage11[i][j] != null) {
            vtl_stage11[i][j].setEnabled(false);
            hrl_stage11[i][j].setEnabled(false);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.