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。
我在导航和 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。