我有三个片段A,B,C 在片段A中 - 获取一些变量id,从服务器然后我创建bundle,将id放入其中并开始片段B,在此片段中我从bundle获取id并显示此id上的所有信息,但是当我开始片段C时然后我按回按钮返回ti片段B,变量id为空。我怎么解决呢?我想我可以在数据库中保存id,但也许有更简单的方法? 据我所知,当我按回片段C时,片段B想要从包中获取信息,这就是我为什么要做下一步的信息:
Bundle bundle = getArguments();
if (fakeID == null) {
fakeID = bundle.getString("fakeID");
}
编辑:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState == null)
{
Bundle bundle = getArguments();
fakeID = bundle.getString("fakeID");
}
else{
fakeID = savedInstanceState.getString("fakeID");
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString("fakeID", fakeID);
}
但是当我回到这个片段时 在此声明
中savedInstanceState == nullif (savedInstanceState == null)
答案 0 :(得分:1)
onSaveInstanceState
的。这意味着如果你在同一个活动中改变片段。 onSavedInstanceChanged
将不会被调用。因此它是null。如链接所示,您必须使用SharedPreferences
或Database
。