2016-07-01 68 views
0

我想一個簡單的按鈕添加到我的應用程序的應用程序,但我得到了以下錯誤:添加按鈕崩潰

試圖調用虛擬方法無效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" /> 

順便說一句,這是我試圖添加的第二個按鈕。第一個工作正常。

+0

您findViewById找不到按鈕。請提供代碼,你膨脹你的佈局,並在那裏你設置onClickListener – babadaba

+0

我認爲,可能有一個答案: http://stackoverflow.com/a/32017810/4667038 – dejvid

+0

需要完整的代碼,那麼只有我們可以建議ans – Mohan

回答

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" /> 

的Java:

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

謝謝這對我來說是正確的! – danbli1

0

檢查是否沒有另一個按鈕或具有相同ID的其他元素。

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); 
     } 
    }); 
    } 
} 

可能會有所幫助。