Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Null pointer execption - Pierwsza aplikacja
03-29-2014, 11:46 PM
Post: #1
Null pointer execption - Pierwsza aplikacja
Cześć,
Przepisałem do połowy lekcji kod, część z onClickListenerem i Toastem z tą małą różnicą, że wszystkie elementy interfejsu dodaje na fragmencie (warto by o tym wspomnieć w kursie, nie byłem w stanie wygenerować kodu bez fragmentu, może moja wina).
Kompiluje wrzucam na urządzenie/symulator i zamyka aplikację.
W CatLogu oczywiście null pointer exception.
Log: http://przeklej.org/file/V54EnK/log.txt
Kod: http://przeklej.org/file/9ERXm2/HelloWorldActivity.java
Rzućcie proszę okiem pewnie jakiś banał.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 12:01 AM (Ten post był ostatnio modyfikowany: 03-30-2014 12:13 AM przez lolo.)
Post: #2
RE: Null pointer execption - Pierwsza aplikacja
Jakiego IDE używasz?
Wrzuć cały projekt to będzie łatwiej zlokalizować błąd.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 08:03 AM
Post: #3
RE: Null pointer execption - Pierwsza aplikacja
Używam Eclipsa Juno (Version: Juno Service Release 2).
A oto cały projekt: http://przeklej.org/file/zYHo3C/HelloWorld.rar
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 01:31 PM
Post: #4
RE: Null pointer execption - Pierwsza aplikacja
Myślałem, że używasz może Android Studio 0.4 bo tam też domyślnie generowało fragmenty ale od wersji 0.5 wrócili do możliwości opcjonalnego wyboru fragmentów. Eclipsa nie używam więc Ci nie jestem w stanie powiedzieć jak tam wyłączyć generowanie fragmentów.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 03:43 PM
Post: #5
RE: Null pointer execption - Pierwsza aplikacja
Musisz kod odpowiedzialny za inicjalizację obiektów:
Kod:
context = (Context) getApplicationContext();
            przycisk = (Button) findViewById(R.id.button1);
            nazwa = (TextView) findViewById(R.id.textView1);
            imie = (EditText) findViewById(R.id.editText1);
            radio = (RadioGroup) findViewById(R.id.radioGroup1);
            rating = (RatingBar) findViewById(R.id.ratingBar1);
Umieścić nie w OnCreate tylko w onCreateView między
Kod:
View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
a
Kod:
return rootView;
dodatkowo wywołania funkcji findViewById musisz poprzedzić wywołaniem obiektu rootView.
Kod:
context = (Context) rootView.getContext();
            przycisk = (Button) rootView.findViewById(R.id.button1);
            nazwa = (TextView) rootView.findViewById(R.id.textView1);
            imie = (EditText) rootView.findViewById(R.id.editText1);
            radio = (RadioGroup) rootView.findViewById(R.id.radioGroup1);
            rating = (RatingBar) rootView.findViewById(R.id.ratingBar1);
A deklaracje tych obiektów musisz przenieść do wnętrza klasy PlaceholderFragment(ale wtedy nie będą dostępne poza tą klasą albo uczynić je statycznymi.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 08:06 PM
Post: #6
RE: Null pointer execption - Pierwsza aplikacja
Ok, działa Smile.
Wrzuciłem statyczne deklaracje obiektów do klasy HelloWorldActivity a przypisanie obiektów i dodanie listenera tak jak mówiłeś do metody onCreateView. Jednak context pobieram w metodzie onCreate.
Działać? Działa ale czy to poprawne. eheheh
Jaki był powód tego NullPointerExceptiona?
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
03-30-2014, 08:19 PM
Post: #7
RE: Null pointer execption - Pierwsza aplikacja
Metoda findViewById nie znajdowała widoków o podanych id i zwracała null. A nie znajdowała bo wszystkie elementy znajdowały się w layoucie fragmentu PlaceholderFragment. Dlatego tam trzeba było umieścić inicjalizacje tych obiektów.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości