2011-01-31 13 views
5

PerchéAndroid TextView e puntatore nullo eccezione

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

generando un'eccezione di puntatore nullo? L'id è corretto, testTextView è correttamente dichiarato nel mio file di layout XML.

risposta

23

L'unico motivo per cui findViewById restituisce null se si passa un ID valido è che si sta impostando la visualizzazione del contenuto errata (con setContentView) o non si è impostata affatto una visualizzazione del contenuto.

+0

Grazie per il tuo post, ma non è quello. Sto chiamando 'setContentView' in' onCreate'. – SK9

+0

Potresti condividere l'intero layout oncreate e xml? – Cristian

+0

Il progetto pulito sembra aver risolto qualunque fosse il problema. Maledizione. – SK9

2

Probabilmente non hai chiamato setContentView. È possibile utilizzare solo findViewById per ottenere elementi di viste che sono già stati gonfiati.

Si potrebbe anche usare un layout per ingrandire la vista, ma probabilmente non è quello che si desidera.

+0

Grazie per il tuo post, ma non è quello. Sto chiamando 'setContentView' in' onCreate'. – SK9

+0

Grazie. Ma non sta funzionando. Voglio che tutti smettano di cercare di spiegare e facciamo invece un esempio funzionante che possiamo usare. Non riesco a testare una spiegazione. Non ho idea di cosa chiamare setcontentview su. Quale parametro? Ti do -1 perché non c'è niente da usare. Si prega di smettere di commentare e iniziare a risolvere il problema. –

2

Sei sicuro che TextView sia impostato sul giusto XML? Ad esempio se stai creando una finestra di dialogo che carica un XML personalizzato, per ottenere un elemento da quel xml devi menzionarlo in dialog.findViewById(R.id.testTextView);

Come ha detto Falmarri, la vista deve essere gonfiata. Capisco che l'hai risolto creando un nuovo progetto, ma ho ancora pensato di menzionarlo per i futuri utenti.

2

Penso che potresti avere scritto setContentView (..) dopo aver definito il TextView. Invertire questi, e dovrebbe funzionare.

Cambio:

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

A:

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

Può anche essere che si è definito l'attività in due file. Ad esempio layout e layout-v21 e alcune informazioni come id mancano su uno di essi. Quindi controlla tutti i layout dell'attività

Problemi correlati