在活动发生变化时将数据存储在片段中

时间:2015-12-04 11:30:28

标签: android android-fragments android-viewpager

我想设计一个基于Feed的应用程序,其设计类似于Facebook,Twitter或Instagram。在主屏幕中,我有一个FeedActivity,它包含一个ViewPager,用于容纳3-4个片段(表示为标签)

{{1}}

当用户触摸帖子(列在ListOfItemsFragment中)时,我想打开另一个活动(或ViewPager中的另一个片段)。如果我打开这个新活动(PostDetailActivity)并且当我返回FeedActivity时,ListOfItemsFragment中的所有数据都会丢失,因为再次创建了FeedActivity。

我应该为帖子详细信息创建一个新的活动,还是应该向FeedActivity添加另一个独立于ViewPager的片段(我希望这个片段是一个弹出窗口,而不是标签的一部分)。

我如何支持这种行为?

感谢。

3 个答案:

答案 0 :(得分:1)

每次按下后,都会创建新的Activity实例。充满数据的数据会消失。只需在清单文件中键入以下行。

 <activity android:name=".MainActivity"
        android:launchMode="singleTop">
 </activity>

答案 1 :(得分:0)

从不同的角度看问题,sqlite是一个解决方案。

另外,即使你的应用程序被彻底销毁并且必须重新启动,存储状态还有额外的好处。请参阅Ada Wikibook here

答案 2 :(得分:0)

只需覆盖此方法并存储您想要再次显示的数据

@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putInt("intTag", intValue);   // Save all the value that you want to retain
    super.onSaveInstanceState(outState, outPersistentState);
}

并在你的onCreate中检查savedInstanceState是否为null而不是获取值并更新你的

if(savedInstanceState != null) {
    int data = savedInstanceState.getInt("intTag");
    // Retrieve all the data you have settled there
}