如何在回收器视图中保存链接列表的实例状态<String>,使其不会在旋转设备上破坏?



我有一个使用RecyclerView的应用程序,该应用程序由Google的codelabs制造。当从LinkedList<String>中敲击TtextView项目时,它将更改为"单击 属性值",但是在旋转我的设备时,活动的活动仅显示为"属性值。此外,在敲击Fab Icon上,它也会在LinkedList<string>中添加一个新单词,这也是旋转设备时清除。我的问题是,如何保存应用程序的insatance状态,即活动不会在旋转时被破坏。

这是该项目的链接:[https://github.com/joblessjoker/recyclerview]

Android Framework提供了一种特殊的方法,可以保存状态

onSaveInstanceState()

在此方法中,您可以保存列表的状态。一种方法是将其保存在给出的捆绑包中。

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

替代方法是将数据保存在Onpause((中的共享Preferences或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");
   }
}

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

最新更新