[英]Android : Save fragment state and restore the view values
嗨,我要在一个片段替换为另一个片段时尝试保存片段的状态。 考虑在我的活动中,我有一个具有textview-1和textview-2的fragmentA 。 当我单击textview-1时,我将fragmentA替换为具有列表视图的fragmentB 。 现在,当我单击fragmentB列表项时,我将获取列表值并更新textview-1。 我为textview-2做同样的事情,但是当我返回时,textview-1的值不见了。 如何保存片段A的状态及其textview-1值。
尝试如下
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString("curChoice", strtext);
}
并在OnActivityCreated()中
if (savedInstanceState != null) {
// Restore last state for checked position.
strtext = savedInstanceState.getString("curChoice", "");
//incrementdata(strtext);
}
但总是savedInstanceState给出null。
当任何碎片被系统销毁时,所有事情都将与活动完全一样地发生。 这意味着每个单独的成员变量也将被片段破坏。 您将必须分别通过onSaveInstanceState
和onActivityCreated
方法手动保存和还原这些变量。
片段内没有onRestoreInstanceState
方法。 因此,您需要执行以下代码。
// These variable are destroyed along with Activity
private String var1,var2;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("VAR1", var1);
outState.putString("VAR2", var2);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
var1 = savedInstanceState.getInt("VAR1");
var2 = savedInstanceState.getString("VAR2");
}
基本上,每个标准小部件(例如EditText
, TextView
, Checkbox
等)都已经在内部实现了这些功能。 您可能需要为某些View启用它,例如,必须将android:freezeText
设置为true才能使TextView
使用该功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.