当一个片段被替换为另一个片段时,iam试图保存片段的状态。在我的活动中,我有一个带有fragmentA的textview-1和textview-2。当我单击textview-1时,我将替换为具有列表视图的fragmentB。现在,当我单击fragmentB列表项时,我将获取列表值并更新textview-1。对于textview-2,我也在做同样的事情,但是当我返回时,textview-1值就消失了。如何保存片段A的状态及其文本视图-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。
发布于 2016-01-18 12:27:06
当任何碎片被系统破坏时,一切都将与活动中的情况完全相同。这意味着每个成员变量也会随着片段被销毁。您必须分别通过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等,都已经在内部实现了这些功能。您可能需要为某些视图启用它,例如,您必须将android:freezeText设置为true,TextView才能使用该特性。
https://stackoverflow.com/questions/34854406
复制相似问题