我的Android应用只有一个活动,所有片段都在一个framelayout中添加或替换。
问题是当我在片段backstack中有两个不同的viewpage并重新创建活动时,第二个viewpager将作为第一个viewpager出现。
下面是我按照它们发生的顺序将片段添加到backstack的方法,因此3是重新创建活动后出现的片段。
将PlacesEventMainViewPager添加到backstack
public void setupPlacesEventMainView()
{
clearBackStack();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
PlacesEventMainViewPager placesEventMainViewPager = new PlacesEventMainViewPager();
transaction.replace(R.id.fragment_container, placesEventMainViewPager, PlacesEventMainViewPager.class.getSimpleName());
transaction.commit();
}
将PlaceDetailViewPager添加到backstack
public void setupPlaceDetailViewPager(Event event) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
PlaceDetailViewPager placeDetailViewPager = new PlaceDetailViewPager();
placeDetailViewPager.setEvent(event);
transaction.add(R.id.fragment_container, placeDetailViewPager,PlaceDetailViewPager.class.getSimpleName());
transaction.addToBackStack(PlaceDetailViewPager.class.getSimpleName());
transaction.commit();
}
将SpecialsList添加到backstack
public void setupEventSpecials(Agenda[] agendas) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
SpecialsList specialsList = new SpecialsList();
specialsList.setAgendas(agendas);
transaction.add(R.id.fragment_container, specialsList,SpecialsList.class.getSimpleName());
transaction.addToBackStack(SpecialsList.class.getSimpleName());
transaction.commit();
}
片段包含的内容。
我可以通过单击PlacesEventMainViewPager片段中的一个项目来访问PlaceDetailViewPager片段。我可以通过单击PlaceDetailViewPager片段中的按钮来访问SpecialsList。
如果您需要更多详细信息,请与我们联系。谢谢!
答案 0 :(得分:0)
你永远不会将PlacesEventMainViewPager添加到backstack,如果按顺序列出PlaceDetailViewPager,它会使PlaceDetailViewPager成为Backstack中的第一个。