4 つのメニュー オプションを含むメニューがあります。これらの各オプションには、対応するフラグメントが表示されます。フラグメントを追加、表示、非表示にする 3 つの関数があります。
private void addFragment(Fragment newFragment, String fragmentName) {
fragmentManager
.beginTransaction()
.add(R.id.content_frame, newFragment,
fragmentName).addToBackStack(null)
.commit();
}
private void hideFragment(Fragment existingFragment) {
if(existingFragment!=null && existingFragment.isVisible()){
fragmentManager.beginTransaction().hide(existingFragment).addToBackStack(null).commit();
}
}
private void showFragment(Fragment existingFragment) {
if(existingFragment!=null){
fragmentManager.beginTransaction().show(existingFragment)
.addToBackStack(null).commit();
}
}
navitemswitchlogic は次のとおりです。
onNavItemSelected(int id) {
switch (id) {
case 1: //option 1 - hide rest of the fragments and show Option1Fragment
hideFragment(option2Fragment);
hideFragment(option3Fragment);
hideFragment(option4Fragment);
if (Option1FragmentDoesnotExist) { //create option1Fragment and add it to FragmentTransaction
option1Fragment = new option1Fragment();
addFragment(option1Fragment,"option1Fragment");
} else
showFragment(option1Fragment);
break;
case 2:
//same as option 1
}
}
予想されること:
現在起こっている
こと:
バックスタックへのフラグメントの追加とバックスタックからのフラグメントの取得を間違えていることはわかっています..しかし、それが正確に何であるかはわかりません。これらすべてを同じトランザクションの一部として実行しようとしました..その微妙な作業も..また、フラグメントを置き換えたくありません...私の質問を正しく構成したいと思います..どんな助けも大歓迎です!ありがとう!