我有一个使用RecyclerView
的应用,该应用由Google的代码实验室制作。轻按TtextView
中的LinkedList<String>
项时,其更改为“已单击+属性值”,但是在旋转设备时,活动被破坏,并且仅显示“属性值。此外,在轻击FAB图标时,它在LinkedList<string>
中添加了一个新词,该词在旋转设备时也会清除。我的问题是,如何保存应用程序的insatance
状态,即旋转时不会破坏活动。
答案 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");
}
}
您可以通过这种方式保存与您相关的数据