java - 按钮数组导致应用程序崩溃
问题描述
我的应用程序中有多个按钮,我想使用循环为每个按钮设置相同的文本。所以我声明了一个数组并以这种方式用按钮填充它:
public class MainActivity extends AppCompatActivity {
Button b1,b2,b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
}
Button[] buArray ={b1,b2,b3};
void b1clicked(View view) {
for (int i =0;i<3;i++) {
buArray[i].setText("it works");
}
}
}
但是当我尝试为这样的数组中的按钮设置文本时
buArray[0].setText("some text");
这会导致我的应用程序崩溃并强制关闭并在日志“NullPointerException”中给我一个这样的错误
解决方案
由于您Button[] buArray ={b1,b2,b3};
在方法之外,因此在创建 Activity 对象时对其进行了初始化。此时b1
,b2
和b3
都是null
。
将初始化移到onCreate()
方法中,它将起作用。
Button b1,b2,b3;
Button[] buArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
buArray = new Button[] {b1, b2, b3};
}
推荐阅读
- java - 如何根据android中的时间戳获取电池百分比?
- javascript - 是的,嵌套对象的验证模式
- oauth-2.0 - Postman 如何在授权码流中获取 OAuth 2.0 auth token?
- ios - 为什么 UIAlertController 在等待答案时不暂停代码?
- python - 如何按间隔分隔数据框列并绘制
- c++ - arm-none-eabi/bin/ld:“.bss”部分不适合“RAM”区域
- html - 在移动菜单上显示链接标题
- python - 将排名最高的值传递给列表的函数
- python - 从函数中,如何将计算添加到列表中?
- r - 根据百分比制作数据子集