2011-01-31 19 views
5

¿Por qué esAndroid TextView y puntero nulo excepción

TextView test = (TextView) findViewById(R.id.testTextView); 
test.getText(); 

generar una excepción de puntero nulo? La identificación es correcta, testTextView está correctamente declarado en mi archivo de diseño XML.

Respuesta

23

La única razón por la que findViewById devuelve nulo si está pasando una identificación válida es que está configurando la vista de contenido incorrecta (con setContentView) o no configura una vista de contenido en absoluto.

+0

Gracias por su publicación, pero eso no es todo. Llamo a 'setContentView' en' onCreate'. – SK9

+0

¿Podría compartir su diseño oncreate y xml completo? – Cristian

+0

El proyecto de limpieza parece haber solucionado el problema. Infierno sangriento. – SK9

2

Probablemente no haya llamado al setContentView. Solo puede usar findViewById para obtener elementos de vistas que ya se han inflado.

También podría usar un layoutinflater para inflar la vista, pero probablemente eso no sea lo que desea.

+0

Gracias por su publicación, pero eso no es todo. Llamo a 'setContentView' en' onCreate'. – SK9

+0

Gracias. Pero no está funcionando. Quiero que todos dejen de tratar de explicar y, en cambio, produzcamos un ejemplo de trabajo que podamos usar. No puedo probar una explicación. No tengo idea a qué llamar setcontentview on. ¿Qué parámetro? Te doy -1 porque no hay nada que usar. Por favor deja de comentar y comienza a resolver el problema. –

2

¿Estás seguro de que TextView está configurado en el XML correcto? Por ejemplo, si está creando un cuadro de diálogo que carga un XML personalizado, para obtener un elemento de ese xml, debe mencionarlo en dialog.findViewById(R.id.testTextView);

Como dijo Falmarri, la vista debe inflarse. Entiendo que lo resolvió creando un nuevo proyecto, pero aún así se lo menciona para futuros usuarios.

2

Creo que es posible que haya escrito setContentView (..) después de definir TextView. Invierta estos, y debería funcionar.

Cambio:

TextView test = (TextView) findViewById(R.id.testTextView); 
. 
. 
setContetView(..) 

Para:

setContetView(..) 
. 
. 
TextView test = (TextView) findViewById(R.id.testTextView); 
0

También puede ser que haya definido la actividad en dos archivos. Por ejemplo, layout y layout-v21 y alguna información como id falta en uno de ellos. Así que revise todos los diseños de la actividad

Cuestiones relacionadas