2011-01-31 13 views
5

DlaczegoAndroid TextView i zerowy wskaźnik wyjątek

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

generowanie wyjątku null pointer? Identyfikator jest poprawny, testTextView jest poprawnie zadeklarowany w moim pliku układu XML.

Odpowiedz

23

Jedynym powodem, dla którego findViewById zwraca wartość null, jeśli przekazujesz poprawny identyfikator, jest ustawienie niewłaściwego widoku zawartości (z setContentView) lub niepowiadanie widoku zawartości w ogóle.

+0

Dzięki za twój wpis, ale to nie to. Nazywam 'setContentView' w' onCreate'. – SK9

+0

Czy możesz podzielić się swoim całym layoutem oncreate i xml? – Cristian

+0

Wygląda na to, że czysty projekt rozwiązał problem. Cholera. – SK9

2

Prawdopodobnie nie zadzwoniłeś pod numer setContentView. Możesz użyć tylko findViewById, aby uzyskać elementy widoków, które już zostały zawyżone.

Możesz również użyć layoutinflater do nadmuchania widoku, ale to prawdopodobnie nie jest to, czego potrzebujesz.

+0

Dzięki za twój wpis, ale to nie jest to. Nazywam 'setContentView' w' onCreate'. – SK9

+0

Dziękuję. Ale to nie działa. Chcę, aby wszyscy przestali próbować wyjaśniać, a zamiast tego przedstawimy przykład, który możemy wykorzystać. Nie mogę przetestować wyjaśnienia. Nie mam pojęcia, CO nazwać wywołania setcontentview. Który parametr? Daję ci -1, ponieważ nie ma nic do użycia. Przestań komentować i zacznij rozwiązywać problem. –

2

Czy jesteś pewien, że TextView jest ustawiony na właściwym XML? Na przykład, jeśli tworzysz Dialog, który ładuje niestandardowych XML, aby uzyskać element z tego xml trzeba wspomnieć o tym w dialog.findViewById(R.id.testTextView);

Jak Falmarri powiedziane, widok musi być napompowane. Rozumiem, że rozwiązałeś go, tworząc nowy projekt, ale wciąż wspominałeś o nim dla przyszłych użytkowników.

2

Myślę, że mógłbyś napisać setContentView (..) po zdefiniowaniu TextView. Odwróć je i powinno działać.

Zmiana:

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

Do:

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

To może być również, że określona działalność w dwóch plikach. Na przykład układ i układ-v21 i niektóre informacje, takie jak id, są niewidoczne na jednym z nich. Sprawdź więc wszystkie układy aktywności:

Powiązane problemy