当一个片段被其他片段替换时,我想尝试保存片段的状态。 在我的活动中考虑我的 fragmentA 与 textview-1 和 textview-2 。当我点击textview-1时,我用fragmentB替换fragmentA ,它有一个列表视图。 现在,当我点击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 始终为空。
答案 0 :(得分:-1)
当系统销毁任何片段时,一切都将与活动完全相同。这意味着每个成员变量也会被片段破坏。您必须分别通过onSaveInstanceState
和onActivityCreated
方法手动保存和恢复这些变量。
Fragment中没有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
等所有标准窗口小部件都已在内部实现。您可能需要为某些视图启用它,例如,您必须将android:freezeText
设置为true才能使用该功能TextView
。