私はそれにロードMainActivityするを持っています。content_containerFragments
そのうちの 1 つで、ロードFragmentすることもできます。sub_containerFragments
私は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();
1 つはギャラリーで、 aまたは aFragmentをロードするメニューがあります(つまり、ギャラリーが親で、写真とビデオが子です)。photosvideos FragmentFragmentFragments
フォト ギャラリーとビデオ ギャラリーをスタックに追加できるようにするために、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 を押すと、のButtonコードが実行され、現在のインスタンスがスタック内のインスタンスに置き換えられますが、空です (またはは呼び出されません)。MainActivityonBackPressedGalleryFragmentsub_containeronCreateViewonResume
誰でも助けることができますか?