//我的英语可能有一些语法错误:)//
我试图将视图设置为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);
}
}
在执行任何操作之前,请先检查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);
}
}
}