繁体   English   中英

Android:保存片段状态并恢复视图值

[英]Android : Save fragment state and restore the view values

嗨,我要在一个片段替换为另一个片段时尝试保存片段的状态。 考虑在我的活动中,我有一个具有textview-1textview-2fragmentA 当我单击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。

当任何碎片被系统销毁时,所有事情都将与活动完全一样地发生。 这意味着每个单独的成员变量也将被片段破坏。 您将必须分别通过onSaveInstanceStateonActivityCreated方法手动保存和还原这些变量。

片段内没有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");
}

基本上,每个标准小部件(例如EditTextTextViewCheckbox等)都已经在内部实现了这些功能。 您可能需要为某些View启用它,例如,必须将android:freezeText设置为true才能使TextView使用该功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM