如何在RecyclerView中保存LinkedList <string>的实例状态,使其在旋转设备上不被破坏?

时间:2019-05-23 06:41:20

标签: java android

我有一个使用RecyclerView的应用,该应用由Google的代码实验室制作。轻按TtextView中的LinkedList<String>项时,其更改为“已单击+属性值”,但是在旋转设备时,活动被破坏,并且仅显示“属性值。此外,在轻击FAB图标时,它在LinkedList<string>中添加了一个新词,该词在旋转设备时也会清除。我的问题是,如何保存应用程序的insatance状态,即旋转时不会破坏活动。

这是项目的链接:[https://github.com/JoblessJoker/RecyclerView]

1 个答案:

答案 0 :(得分:0)

android框架提供了一种特殊的方法,可以让您保存状态

onSaveInstanceState()

在此方法内,您可以保存列表的状态。一种方法是将其保存在作为参数给定的包中。

然后,您将在onCreate和onCreateView方法中收到相同的捆绑软件,您可以在其中使用它们来获取以前保存的数据。

另一种方法是将数据保存在onPause()中的SharedPreferences或Database之类的持久性存储中,然后在onResume()中或需要时获取此数据。

所有这些方法都是有效的,都很好,您选择的方法取决于您

@Override
public void onSaveInstanceState(Bundle out){
   out.putString("test","test");
   super.onSaveInstanceState(out);

}


@Override
public void onCreate(Bundle savedInstance){
   if(savedInstance!=null){
     //We have saved state
     String test = savedInstance.getString("test");
   }else{
     //We do not have saved state, get the data from intent extra or argument for fragment
     String test = getIntent().getStringExtra("test");
   }
}

您可以通过这种方式保存与您相关的数据