Android 带有 Viewpager 的向上按钮:返回到之前选择的片段

Android up button with Viewpager: go back to the previously selected fragment

我在导航和 activity 的向上按钮方面遇到一些问题。我在一个 activity 中使用 Viewpager 实现了两个选项卡,然后另一个 activity 从前一个选项卡中加载。当用户单击 phone 的后退按钮或 activity 的向上按钮时,我想返回到第一个 activity 的先前选择的选项卡和片段。

到目前为止,我已经能够使用 onSaveInstanceState 和以下代码为后退按钮执行此操作:

@Override
protected void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    bundle.putInt("currentPage", mViewPager.getCurrentItem());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState != null) {
        int page = savedInstanceState.getInt("currentPage", 0);
        mViewPager.setCurrentItem(page);
        getSupportActionBar().setSelectedNavigationItem(page);
    }
}

为什么向上按钮不起作用?我必须做什么?

如果这是一个容易解决的问题,我们将不胜感激和抱歉,但我是 Android 编程的新手。

我终于在 Returning from an activity using navigateUpFromSameTask() 找到了解决方案。重新创建 activity 时,savedInstanceState 为空。为避免这种情况,activity 的启动模式必须在 Android 清单中声明为 singleTop。