2016-04-11 8 views
0

Мне нужна помощь. Я не знаю, что такое wron here.Need Сохраненные данные экземпляра в фрагменте, но это не работает для меня? Может ли кто-нибудь помочь? Вот мой код:onSaveInstanceState in Fragment не работает?

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_main, container, false); 

     if (savedInstanceState == null) { 
      Log.e(getActivity().getClass().getSimpleName(),"DATA is NULL"); 
     }else{ 
      Log.e(getActivity().getClass().getSimpleName(),"DATA IS NOT NULL " + savedInstanceState.getString(Constans.SAMPLEDATA)); 
     } 


@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putParcelable(Constans.MOVIE, movie); 
     outState.putString(Constans.SAMPLEDATA, "sampleData"); 
    } 
+0

Вы вызываете 'super.onSaveInstanceState()' в Управлении, который обрабатывает его Фрагмент? – DeeV

+0

Как вы знаете, что он не работает? – Pooya

ответ

0

Добавить super.onSaveInstanceState (outState);

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putParcelable(Constans.MOVIE, movie); 
    outState.putString(Constans.SAMPLEDATA, "sampleData"); 
    super.onSaveInstanceState(outState); 
} 
+1

Почему есть два супервызов? – Pooya

+0

Мне жаль. Я обновляю свой ответ !!! –

+0

это не работает для меня. Я написал это, но ничего не происходит. –

1

Это происходит потому, что на экране вращается ваша деятельность пересоздался так же фрагмент в нем начинается с начальной позиции снова, как она была начата деятельность первого запуска

Вы должны добавить это в OnCreate вашей деятельности и установить фрагмент внутри, если заявление как в этом примере

if (savedInstanceState == null){ 

     launchfragment 

    } else { 

     // do nothing 
    } 

надеюсь, что это помогает

+0

это не имеет ничего общего с заявленной проблемой – Pooya