2015-06-22 2 views
-1

Я занимаюсь разработкой приложений Android и у меня есть в моей основной деятельности фрагмент с этим:Фрагмент утратившим

 searchInnerPlaylistFragment = InnerPlaylistFragment.newInstance(); 

     Bundle bdl = new Bundle(); 
     bdl.putString(InnerPlaylistFragment.PLAYLIST_ID_KEY, ytf.getId()); 
     bdl.putString(InnerPlaylistFragment.PLAYLIST_TITLE_KEY, ytf.getTitle()); 
     bdl.putInt(InnerPlaylistFragment.PLAYLIST_VIDEO_NUMBER_KEY, videoNum); 
     searchInnerPlaylistFragment.setArguments(bdl); 

     ft.replace(R.id.search_inner_list_fragment, searchInnerPlaylistFragment).commit(); 

И когда я открыть опцию «Не сохранять действия» в параметрах разработчика, и перейти к фону с моим приложением и возврату к приложению searchInnerPlaylistFragment станет нулевым, но он все еще находится в действии.

Есть возможность сохранить этот фрагмент?

+0

У вас есть трассировка стека? –

ответ

1

Для корректного сохранения экземпляра состояния фрагмента, вы должны сделать следующие коды:

В фрагмента, сохранение состояния экземпляра путем переопределения onSaveInstanceState и восстановление на onActivityCreated:

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ... 
    if (savedInstanceState != null) { 
     //Restore the fragment's state here 
    } 
} 
... 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

//Save the fragment's state here 


} 

И важный момент, в вам нужно сохранить экземпляр фрагмента на onSaveInstanceState и восстановить onSreate.

public void onCreate(Bundle savedInstanceState) { 
    ... 
    if (savedInstanceState != null) { 
     //Restore the fragment's instance 
     mContent = getSupportFragmentManager().getFragment(
        savedInstanceState, "mContent"); 
     ... 
    } 
    ... 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

//Save the fragment's instance 
getSupportFragmentManager().putFragment(outState, "mContent", mContent); 


} 

Надеюсь, что эта помощь.

0

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

изменить свой фрагмент, заменяющий строку, как

ft.replace (R. id.search_inner_list_fragment, searchInnerPlaylistFragment) .addToBackStack(). commit();

, и если вы хотите вернуть этот фрагмент, вы можете его поместить как manager.popBackStack();