【问题标题】:Saving and Restoring instance state with Fragments [duplicate]使用片段保存和恢复实例状态[重复]
【发布时间】:2014-01-11 11:27:53
【问题描述】:

这是我的代码:

@Override
public void onSaveInstanceState(Bundle savedInstanceStateBundle)
{
    savedInstanceStateBundle.putInt(AVERAGE_SESSION_VALUE_HOLDER, averageSessionSeek.getProgress());
    savedInstanceStateBundle.putInt(CONFIDENCE_VALUE_HOLDER, confidenceSeek.getProgress());
    savedInstanceStateBundle.putInt(CONVERSION_TIME_VALUE_HOLDER, conersionTimeSeek.getProgress());

}

以上代码属于InputFragment.java,它扩展了Fragment。上述方法保存了实例的状态,因此当用户离开特定的Fragment 并返回到它时,实例将被恢复。我用下面的代码试了一下

@Override 
public void onRestoreInstanceState(Bundle savedInstanceStateBundle)
{

}

但它失败了,编译错误。那么,如何重新加载Fragments 中的实例状态?

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    Fragment 没有 onRestoreInstanceState……它是 onActivityCreated()(出于技术原因,Android 团队以这种方式可怕地实现了这一点)。

    有关详细信息,请参阅 StackOverflow 上的 this thread

    【讨论】:

      【解决方案2】:

      onSaveInstanceState 的文档是这样说的:

      调用以要求片段保存其当前动态状态,以便以后可以在其进程重新启动的新实例中重建它。如果以后需要创建一个新的fragment实例,你在Bundle中放置的数据将在提供给onCreate(Bundle)、onCreateView(LayoutInflater, ViewGroup, Bundle)和onActivityCreated(Bundle)的Bundle中可用)。

      这对应于 Activity.onSaveInstanceState(Bundle) 并且这里的大部分讨论也适用于此。

      使用 onActivityCreated(Bundle) 代替 onSaveInstanceState()。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2013-04-04
      • 2014-04-25
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多