按钮阵列导致应用崩溃

时间:2018-07-02 16:40:52

标签: java android

我的应用程序中有多个按钮,我想使用循环为每个按钮设置相同的文本。因此,我声明了一个数组并以这种方式用按钮填充它:

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

1 个答案:

答案 0 :(得分:1)

由于您的Button[] buArray ={b1,b2,b3};在方法之外,因此在创建Activity对象时会对其进行初始化。此时,b1b2b3均为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};  
}