1 回答
TA贡献1860条经验 获得超9个赞
不可以。如果您需要访问保存的数据片段,您需要从 onCreate 中的 savedInstanceState Bundle 中提取它们,并将它们保存为您的 Activity 中的字段。如果您只需要检测此 Activity 是否已重新创建(与检查 savedInstanceState 是否为 null 一样常见),您可以在 Activity 中声明一个布尔字段,并在savedInstanceState 在范围内时将其设置在 onCreate 中,然后在开始:
private boolean activityRecreated;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityRecreated = savedInstanceState != null;
}
@Override
public void onStart() {
if (activityRecreated) {
// code here
}
}
编辑:获得有关您要保存的状态的更多信息后,请尝试以下操作:您的活动中应该有一个字段来跟踪 ViewPager 的状态。此标签保存用户所在的选项卡。它可以是 String 标签或 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 标签可见的情况下重新创建活动。
添加回答
举报