我有MainActivity一个content_container要加载Fragments的内容。
在其中一个Fragment我也有一个sub_container要加载的Fragments.
在MainActivity我管理带有堆栈的后退按钮Fragment:
public Fragment addFragmentToStack(Fragment fragment){
if(fragmentStack.size()>MAX_NUM_FRAGMENTS){
fragmentStack.remove(0);
}
return fragmentStack.push(fragment);
}
@Override
public void onBackPressed() {
if (fragmentStack.size() > 0) {
fragmentStack.pop();
if (MyApplication.fragmentStack.size() > 0) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_container, fragmentStack.peek());
ft.commit();
}
}
}
每当我想Fragment在content_container我的使用中替换 a
Fragment someFragment = new SomeFragment();
fragmentTransaction.replace(R.id.content_container, ((MainActivity)getActivity()).addFragmentToStack(someFragment), "");
fragmentTransaction.commit();
一个Fragment是画廊,其中有一个加载 aphotos或 a的菜单videos Fragment(因此画廊是父级Fragment,照片和视频Fragments是子级)。
为了能够在堆栈中添加照片库和视频库,我在 GalleryFragment 中使用:
if(mType.equals("photos")){
Fragment videoFragment = new VideoFragment();
fragmentTransaction.replace(R.id.sub_container, videoFragment, "");
((MainActivity)getActivity()).addFragmentToStack(this);
}
else{
Fragment photoFragment = new PhotoFragment();
fragmentTransaction.replace(R.id.sub_container, photoFragment, "");
((MainActivity)getActivity()).addFragmentToStack(this);
}
即我GalleryFragment在堆栈中添加父级。
例如,当我从视频转到照片库并按 back时,将执行's中Button的代码,并将当前实例替换为堆栈中的实例,但它是空的(没有or被调用)。MainActivityonBackPressedGalleryFragmentsub_containeronCreateViewonResume
有人可以帮忙吗?