5

Używam biblioteki pomocy v4 i nie mogę zapisać stanu fragmentu.FragmentManager.getFragment() NullPointerException

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    ... 
    if(mFragment != null) 
     getSupportFragmentManager().putFragment(outState, "frag", mFragment); 
    ... 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    ... 
    if(savedInstanceState != null) 
    { 
     //Here I get NullPointerException 
     getSupportFragmentManager().getFragment(savedInstanceState, "frag"); 
    } 
    ... 
} 

Kiedy zadzwonić getFragment() NullPointerException jest wyrzucany (savedInstanceState zawiera wpis z "frag").

Oto część produkcji logcat:

04-18 00:10:56.719: E/AndroidRuntime(14644): Caused by: java.lang.NullPointerException 
04-18 00:10:56.719: E/AndroidRuntime(14644): at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569) 

Również próbowałem zadzwonić getFragments() która zwraca null. Wydaje mi się to dziwne.

Doceniam każdą pomoc!


Rozwiązanie:

zapomniałem użyć super.onSaveInstanceState(outState); wewnątrz onCreate metody.

+1

Czy wywołujesz metodę SaveSstanceState w ramach aktywności nadrzędnej? ([see] (http://stackoverflow.com/a/8752360/2668136)) – Fllo

+0

Tak, bardzo głupi ze mnie, zapomniałem zadzwonić 'super.onSaveInstanceState (outState)'. Dziękuję bardzo! – Tzoiker

+0

Nie ma za co. Cieszę się, że teraz działa. – Fllo

Odpowiedz

4

Dzięki @Fllo. Problem polegał na tym, że zapomniałem zadzwonić pod numer onSaveInstanceState() aktywności rodzica.

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    //Added this and the problem was solved 
    super.onSaveInstanceState(outState); 
    ... 
} 
+1

Masz na myśli 'void onSaveInstanceState' right? –