我有一个活动,最初主持一个ViewPager,连接到FragmentPagerAdapter.
当用户点击ViewPager的子片段中的项目时,我正在使用FragmentTransaction将空容器视图替换为我想要导航到的新片段.
如果我在事务上使用addToBackStack(),提交事务然后导航回来,我不会返回到ViewPager的视图(初始布局).
如果我不在事务上使用addToBackStack(),提交事务然后导航回来,应用程序退出.
很明显ViewPager没有被添加到backstack中(这并不令人惊讶,因为它本身不是一个片段).但是我希望默认行为是背压将我带回到那个活动的初始阶段.查看(ViewPager).
基于我所读到的内容,似乎可能是因为片段事务正在发生,ViewPager或PagerAdapter会丢失应该显示哪个片段的跟踪.
我真的对此感到困惑,但我最终创建了一大堆代码覆盖了onBackPress并显示和隐藏了viewpager视图.我认为有一种更简单的方法可以使用默认行为来执行适当的导航.
TL;博士
A是一个托管片段的Viewpager.B是一个新片段.
当我用B替换A,然后按回来时,我希望导航回A,但这不会发生.
任何建议将不胜感激.
码:
主要活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
headingLayout = (RelativeLayout) findViewById(R.id.headingLayout);
headingLayout.setVisibility(View.GONE);
// Set up the ViewPager, attaching the adapter and setting up a listener
// for when the
// user swipes between sections.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setPageMargin(8);
/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();
/** Instantiating FragmentPagerAdapter */
MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm);
/** Setting the pagerAdapter to the pager object */ …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter