Ciao, sto scrivendo una piccola app per Android (Versione 2.3.3). Ora ho questa strana eccezione NullPointer in questo codice molto semplice:NullPointerException in onCreate() quando si utilizza findViewById - setContentView è usato prima?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenu);
newDeck = (Button) findViewById(R.id.newDeckB);
loadDeck = (Button) findViewById(R.id.loadDeckB);
viewEdition = (Button) findViewById(R.id.viewEditionB);
newDeck.setOnClickListener(this);
loadDeck.setOnClickListener(this);
viewEdition.setOnClickListener(this);
}
Im usando questo layout semplice nel momento in menu.xml principale:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/newDeckB"
android:text="New Deck"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/loadDeckB"
android:text="Load Deck"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/viewEditionB"
android:text="View Edition"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/currentDeckTextView"
android:text="Default Deck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Ora il mio problema è un nullpointexception in linea 25 , che è la linea dove i impostare il primo clickListener
newDeck.setOnClickListener(this);
Utilizzo del debugger ho capito che il pulsante newDeck è nullo. Ho cercato molto sul web ma l'unica risposta a questo tipo di problemi è stata controllare che setContentView sia impostato prima di findViewById. Questo è ovviamente il caso qui.
Sarei molto contento per qualsiasi tipo di consiglio.
Thx in Prima!
Vuol 'R.id.newDeckB' in realtà esistono in' R.layout.mainmenu'? –
Avevo lo stesso identico problema (frustrante!), Ed è stato il commento qui sotto (@manelizzard) a risolverlo: "A volte è necessario" pulire "e ricostruire il progetto per ottenere le risorse corrette compilate, è qualcosa da Eclipse '. (Ad esempio, non è necessario usare 'onPostCreate()'!) – coco
Pulisci e ricompila i lavori ... che strano. –