使用Fragments保存和恢复实例状态

时间:2013-12-23 09:08:36

标签: java android android-fragments

这是我的代码:

@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的{​​{1}}。上述方法保存了实例的状态,因此当用户离开该特定Fragment并返回到该实例时,将恢复实例。我用以下代码尝试了它

Fragment

但它失败了,编译错误。那么,我如何在@Override public void onRestoreInstanceState(Bundle savedInstanceStateBundle) { }

中重新加载实例状态

2 个答案:

答案 0 :(得分:0)

片段没有onRestoreInstanceState ...它是onActivityCreated()(由于技术原因,这是由Android团队以这种方式实现的。)

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

答案 1 :(得分:0)

onSaveInstanceState的文档说明了这一点:

  

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

     

这对应于Activity.onSaveInstanceState(Bundle),此处的大部分讨论都适用于此。

使用onActivityCreated(Bundle)而不是onSaveInstanceState()。