2017-01-04 3 views
0

Я не могу восстановить свой фрагмент!Невозможно восстановить фрагмент

Я сохраняю как:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) 
{ 
    if(cameraFragment != null && cameraFragment.isAdded()) 
     getSupportFragmentManager().putFragment(savedInstanceState, "cameraFrameLayout", cameraFragment); 

    super.onSaveInstanceState(savedInstanceState); 
} 

и восстановление в OnCreate (savedInstanceState):

if(savedInstanceState == null) 
     cameraFragment = CameraFragment.newInstance(); 
    else 
     cameraFragment = (CameraFragment) getSupportFragmentManager().findFragmentByTag("cameraFrameLayout"); 

При изменении ориентации устройства я могу успешно видеть, что onSaveInstanceState в вызове с моим фрагментом но на onCreate у меня есть нулевой экземпляр ...

Txs для справки!

+0

Вы вызвали 'setRetainInstance (true)' на свой 'CameraFragment'? – Egor

+0

То же самое (я положил setRetainInstance (true) на onCreateView() моего фрагмента ...) – Hiromi

ответ

0

Вам нужно восстановить сохраненный фрагмент в onRestoreInstanceState

public void onRetoreInstanceState(Bundle inState){ 
    cameraFragment = getFragmentManager().getFragment(inState,"cameraFrameLayout"); 
} 

Также обратите внимание, что getFragment называется к FragmentManager вместо этого, если findFragmentByTag. Надеюсь, поможет!

Примечание: вызов супер методы в onSaveInstanceState и onRestoreInstanceState переопределяет

0

В вашем фрагменте метод OnCreate() написать setRetainInstance(true);

В деятельности, которая создает фрагмент, вы должны сделать что-то вроде этого

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (savedInstanceState == null) 
    { 
     // Display the fragment as the main content. 
     getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, CameraFragment.newInstance()) 
      .commit(); 
    } 
} 

android.R.id.content могут быть разными в вашем случае. Здесь вы хотите загрузить фрагмент.

Смежные вопросы