不需要。如果需要访问已保存的数据块,则需要从OnCreate中的SavedInstanceState包中提取它们,并将它们保存为活动中的字段。如果只需要检测是否重新创建了此活动(与检查savedinstancestate是否为空时一样),可以在活动中声明一个布尔字段,并在savedinstancestate处于作用域时将其设置为oncreate,然后在onstart中访问它:
private boolean activityRecreated;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityRecreated = savedInstanceState != null;
}
@Override
public void onStart() {
if (activityRecreated) {
// code here
}
}
编辑:获取有关尝试保存的状态的详细信息后,请尝试以下操作:
您的活动中应该有一个跟踪viewpager状态的字段。此标记保存用户所在的选项卡。它可以是字符串标记或ID(int)标记。您应该通过在活动中重写OnSaveInstanceState来保存此内容:
private int tabIndex = 0 // NOTE: get this from your ViewPager's PagerAdapter
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("tabIndex", tabIndex)
}
然后,在OnCreate中,可以检索此值:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
tabIndex = savedInstanceState.getInt("tabIndex", 0);
// here, make sure your ViewPager's PagerAdapter is created and set it to this tab
}
// rest of your onCreate goes here
}
以这种方式保存选项卡索引将允许重新创建活动,并使相应的viewpager选项卡可见。