添加按钮会使应用崩溃

时间:2016-07-01 13:22:05

标签: java android button runtime-error

我正在尝试向我的应用程序添加一个简单的按钮,但我收到以下错误:

  

尝试在空对象引用上调用虚方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

这是我的Java代码:

final Button settings = (Button) findViewById(R.id.settings);
settings.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent i = new Intent(getBaseContext(), Settings.class);
        startActivity(i);
    }
});

这是我的XML:

<Button
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:id="@+id/settings"
    android:src="@drawable/settings"
    android:background="@drawable/settings"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="70dp"
    android:layout_marginRight="10dp" />

顺便说一句,这是我试图添加的第二个按钮。第一个工作正常。

3 个答案:

答案 0 :(得分:0)

检查没有其他按钮或其他具有相同ID的元素。

答案 1 :(得分:0)

在你的代码中这样做:

class Abc{
Button settings;

   onCreate(..){

    ...
    setContentView(<your xml>);
    ...

    settings = (Button) findViewById(R.id.settings);
    settings.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent i = new Intent(getBaseContext(), Settings.class);
            startActivity(i);
        }
    });
   }
}

可能会有所帮助。

答案 2 :(得分:0)

这似乎是一个参考问题。可能存在多个具有相同ID的按钮。

为了简化这一过程,您还可以在XML中为您的按钮设置onClick属性。这是代码:

<强> XML:

<Button
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:id="@+id/settings"
    android:src="@drawable/settings"
    android:background="@drawable/settings"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="70dp"
    android:layout_marginRight="10dp"
    android:onClick="ButtonClick" />

<强>爪哇:

public void ButtonClick(View v){
    Intent i = new Intent(getBaseContext(), Settings.class);
    startActivity(i);
}