如何在启动另一个片段后在Fragment中保存数据?

时间:2013-12-27 09:32:01

标签: android android-fragments

我有三个片段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 == null
if (savedInstanceState == null)

1 个答案:

答案 0 :(得分:1)

除非活动本身已调用,否则不会调用this onSaveInstanceState

。这意味着如果你在同一个活动中改变片段。 onSavedInstanceChanged将不会被调用。因此它是null。如链接所示,您必须使用SharedPreferencesDatabase