Mic*_*ith 25 android android-fragments
我有片段,我保留在FragmentManager的后台.保存每个片段状态以使用成员变量进行方向更改,例如:
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putLong("userId", mUserId);
outState.putString("username", mUsername);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如果有一个方向更改,因为backstack中的每个片段都是通过onSaveInstanceState调用的,所以我得到一个空指针异常,因为成员变量不再存在.
关于如何解决这个问题的任何想法?
Jor*_*Gil 39
您的成员变量可能不再存在,因为FragmentManager您的Activity所有碎片都在死亡.
您需要覆盖的方法onSaveInstanceState你的Activity类为好,因为你需要保存Activity在保存状态之前Fragments的状态.
正如文件所说:
在许多情况下,片段可能大部分被拆除(例如放置在没有显示UI的后台堆栈上),但是在其拥有的活动实际上需要保存其状态之前,其状态将不会被保存.
UPDATE
在你的Activity onSaveInstanceState和onRestoreInstanceState,尝试保存你的Fragment引用,然后用这样的东西恢复它们:
public void onSaveInstanceState(Bundle outState){
getFragmentManager().putFragment(outState,"myfragment",myfragment);
}
public void onRestoreInstanceState(Bundle inState){
myFragment = getFragmentManager().getFragment(inState,"myfragment");
}
Run Code Online (Sandbox Code Playgroud)
告诉我,如果你运气好的话!:-)
以Jorge Gil为基础 - 'xɔɾ.xɛxil答案请注意以下事项:
对不起是船长显而易见的!
| 归档时间: |
|
| 查看次数: |
40608 次 |
| 最近记录: |