View setEnabled() Error : NullPointerException



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

Caused by: java.lang.NullPointerException: Attempt to
invoke virtual method 'void android.widget.Button.setEnabled(boolean)'
on a null object reference

我不明白的是,错误不是发生在ccl_stage11[][],而是发生在vtl_stage11hrl_stage11[][],即使它们以相同的方式使用相同的for

我试图在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);
}
}

在执行任何操作之前检查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);
}
}
}

相关内容

最新更新