2016-11-17 3 views
0

Also wenn der Benutzer in meiner App ist und sie nach Hause klicken und zu mehreren anderen Anwendungen gehen und dann wieder kommen, dann wird die Aktivität neu erstellt und getActivity wird null sein, wenn ich darauf anrufe mein Fragment.GetActivity Null im Fragment, wenn App wieder

Eine Lösung, die ich fand, war, eine statische Variable zu erstellen und getActivity in der onCreateView zu speichern.

Ich fühle mich wie das ist keine gute Lösung. Gibt es eine andere Möglichkeit, dass ich das tun kann?

Ich habe versucht, eine nicht statische Variable und speichern Sie es in OncreateView und onAttach, aber GetActivity wird null sein.

Hier ist der Fehler, den ich bekomme, wenn ich getActivity verwende, wenn ich es nicht als eine statische Variable speichern. Ich verwende es in meinem AsyncTask für ProcessDialog in meinem Fragment.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference 

Danke.

+0

Welche Methode überschreiben Sie, wenn Sie getActivity() als null haben? –

Antwort

0

Implementieren Sie die Methode onActivityCreated? Sie sollten getActivity innerhalb dieser Methode verwenden.

Eine andere Problemumgehung wäre Verwendung onAttach, um Ihre Aktivität zu halten.

@Override 
public void onAttach(Activity activity) { 
super.onAttach(activity); 
mActivity = activity; 
} 
+0

Danke, aber ich habe das schon probiert. Es funktioniert nur, wenn die Variable statisch ist. Ich habe das Gefühl, dass eine statische Variable falsch ist. Aber ich werde das tun, bis ich etwas anderes finde oder finde. – huey77

1

Wenn Sie sicher sind, dass onAttach(Activity activity) auch null hat, dann vermute ich mehrere Instanz gleichen Fragment zur gleichen Zeit haben. Drucken Sie die Fragment-Instanz in onResume und überprüfen Sie die Instanzen.

Verwandte Themen