【问题标题】:Show what has inputted after BACK button pressed显示按下 BACK 按钮后输入的内容
【发布时间】:2012-07-24 17:52:38
【问题描述】:

我有两个片段。

FirstFragment 显示输入表单

Class FirstFragment extends Fragment {
   ...
}

用户提交上面FirstFragment的表单后,SecondFragment会显示出来。

Class SecondFragment extends Fragment{
 ...
}

现在,当用户按下物理 BACK 按钮时,FirstFragment 表单再次显示。

此时,我还想显示用户之前输入的内容,并将输入内容填写在表单中,以便用户无需再次输入所有内容。

如何在我的两个 Fragment 中实现这个功能?

【问题讨论】:

  • 如何将输入保存在 SharedPreferences 中?
  • 我正在寻找一种不需要使用 SharedPreferences 的方式。

标签: android android-layout android-intent android-emulator android-fragments


【解决方案1】:

重写 onSaveInstanceState(),确保调用 super.onSaveInstanceState() 来保留片段。在 onCreate()、onCreateView() 或 onActivityCreated() 中恢复状态。请参阅Handling the Fragment LifecycleSaving Activity State

【讨论】:

  • 当我更改为第二个片段时,我的 onSaveInstanceState() 不会被调用。
【解决方案2】:

如果您从后台堆栈返回片段,它不会重新创建片段,而是重新使用相同的实例并在片段生命周期中以 onCreateView() 开始,请参阅片段生命周期。

所以如果你想存储状态,你应该使用实例变量而不是依赖 onSaveInstanceState()。

【讨论】:

    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2017-08-27
    • 2013-08-25
    • 1970-01-01
    相关资源
    最近更新 更多