我无法恢复我的片段!
我正在保存:
@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上我有一个空实例...
寻求帮助!
答案 0 :(得分:0)
您需要在onRestoreInstanceState
中恢复已保存的片段public void onRetoreInstanceState(Bundle inState){
cameraFragment = getFragmentManager().getFragment(inState,"cameraFrameLayout");
}
另请注意,如果 findFragmentByTag ,则 getFragment 会调用 FragmentManager 。希望能帮助到你!
注意:在onSaveInstanceState和onRestoreInstanceState覆盖中调用超级方法
答案 1 :(得分:0)
在你的片段onCreate()方法中写setRetainInstance(true);
在创建片段的Activity中,您应该执行类似这样的操作
@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
可能与您的情况不同。这是您要加载片段的位置。