4

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
    }
}

予想されること: ここに画像の説明を入力 現在起こっている こと:ここに画像の説明を入力 バックスタックへのフラグメントの追加とバックスタックからのフラグメントの取得を間違えていることはわかっています..しかし、それが正確に何であるかはわかりません。これらすべてを同じトランザクションの一部として実行しようとしました..その微妙な作業も..また、フラグメントを置き換えたくありません...私の質問を正しく構成したいと思います..どんな助けも大歓迎です!ありがとう!

4

0 に答える 0