首页 > 解决方案 > 按钮数组导致应用程序崩溃

问题描述

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

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”中给我一个这样的错误

标签: javaandroid

解决方案


由于您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};  
}

推荐阅读