我有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被调用)。MainActivity
onBackPressed
GalleryFragment
sub_container
onCreateView
onResume
有人可以帮忙吗?