首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android :保存片段状态并恢复视图值

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

Stack Overflow用户
提问于 2016-01-18 12:06:33
回答 1查看 4K关注 0票数 2

当一个片段被替换为另一个片段时,iam试图保存片段的状态。在我的活动中,我有一个带有fragmentAtextview-1textview-2。当我单击textview-1时,我将替换为具有列表视图的fragmentB。现在,当我单击fragmentB列表项时,我将获取列表值并更新textview-1。对于textview-2,我也在做同样的事情,但是当我返回时,textview-1值就消失了。如何保存片段A的状态及其文本视图-1值。

试过如下

代码语言:javascript
复制
@Override
public void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
     outState.putString("curChoice", strtext);
}

在OnActivityCreated()中

代码语言:javascript
复制
 if (savedInstanceState != null) {
             // Restore last state for checked position.
             strtext = savedInstanceState.getString("curChoice", "");
             //incrementdata(strtext);
         }

但是,savedInstanceState总是给出null。

EN

回答 1

Stack Overflow用户

发布于 2016-01-18 12:27:06

当任何碎片被系统破坏时,一切都将与活动中的情况完全相同。这意味着每个成员变量也会随着片段被销毁。您必须分别通过onSaveInstanceStateonActivityCreated方法手动保存和恢复这些变量。

片段中没有onRestoreInstanceState方法。所以您需要执行如下代码所示的操作。

代码语言:javascript
复制
// 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等,都已经在内部实现了这些功能。您可能需要为某些视图启用它,例如,您必须将android:freezeText设置为true,TextView才能使用该特性。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34854406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档