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