更换片段时如何保存数据

时间:2017-09-05 10:48:41

标签: android android-fragments fragmenttransaction

首先,我尝试了所有可用的解决方案,但我仍然没有得到这个问题的答案。

我有一个活动,其中包含很少会填充ViewPager的片段,我以这种方式填充viewPager的方式。

fragment = getSupportFragmentManager();
        fragment.beginTransaction()
                .replace(R.id.homepageVp, newFrag)
                .addToBackStack(null)
                .commit();

支持有片段A,我使用上面的代码用片段B替换它,然后这是我的问题,是否可以从片段A移动到片段B并使用上面的代码移回片段A但仍然包含数据来自之前的替换(第一个)。

我尝试过使用

 @Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString(VAR_KEY, jsonResult);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    jsonResult = savedInstanceState.getString(VAR_KEY);
}

在Fragment A中,这是我的理解,执行onSaveInstanceState以保存jsonResult变量,以便稍后再次创建我的活动时,执行onActivityCreated并将前一个值放入jsonResult变量中。但是没有用,所以也许我犯了一个错误,或者我对Fragment LifeCycle的理解不正确。

1 个答案:

答案 0 :(得分:0)

如果您不想在viewPager中重新创建片段,只需在offscreenPageLimit中设置viewPager,如下所示:

viewPager.setOffscreenPageLimit(/*Total no of fragments*/);