2017-09-05 38 views
0

首先,我已经尝试了所有可用的解决方案,但我仍然没有得到这个问题的答案。如何在更换碎片时保存数据

我有一个活动,有几个片段将填充ViewPager,我填充viewPager的方式是这样。

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

suppouse有片段A和I替换它通过使用以上的代码片段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); 
} 

片段A里面试过了,这是我的理解,是的onSaveInstanceState执行后保存jsonResult变量,这样当再次执行onActivityCreated创建我的活动,并把以前的值成jsonResult变量。但那不起作用,所以也许我犯了一个错误,或者我对碎片生命周期的理解不正确。

+0

为什么不创建一个单独的类来存储JSON和从任何地方访问它? –

+0

你试过onCreateView而不是onActivityCreated? – phpdroid

回答

0

如果你不想重新创建viewPager片段只设置在offscreenPageLimitviewPager这样的:

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