Hola, estoy escribiendo una pequeña aplicación de Android (Versión 2.3.3). Ahora me sale este Excepción NullPointer extraña en este código muy básico:NullPointerException en onCreate() cuando se usa findViewById - setContentView se usa antes?
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 este diseño simple en el momento en menu.xml principal:
<?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>
Ahora mi problema es una nullpointexception en la línea 25 , que es la línea donde i establecer el primer clickListener
newDeck.setOnClickListener(this);
Usando el depurador i cuenta de que el botón newDeck es nulo. Busqué mucho en la web, pero la única respuesta a ese tipo de problema fue verificar que setContentView esté configurado antes de findViewById. Este es obviamente el caso aquí.
Estaría muy contento de cualquier tipo de consejo.
Thx in Before!
¿Tiene 'R.id.newDeckB' realidad existen en' R.layout.mainmenu'? –
Estaba teniendo exactamente el mismo problema (¡frustrante!), Y fue el comentario a continuación (@manelizzard) lo que me solucionó: 'A veces es necesario "limpiar" y reconstruir el proyecto para obtener los resúmenes correctos compilados, es algo de Eclipse '. (es decir, no es necesario que use 'onPostCreate()'!) – coco
Limpiar y reconstruir obras ... qué extraño. –