2

以下のプロジェクトを作成して、正確なコードと何が起こっているかを確認できるようにしました

基本的に私がやろうとしているのは、一部のページのタブを非表示にして、他のページに表示することです。

以下は、onresume でタブを表示するために使用しているコードです。

       if(getActivity().getActionBar().getNavigationMode()==ActionBar.NAVIGATION_MODE_STANDARD){
        getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }

次に、タブを非表示にするために、再開時に以下を実行しています。

 getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

私が最初のフラグメントにいるとき(バックスタックには何もありません)。タブの表示と非表示を瞬時に切り替えることができます。タブを変更すると時々エラーが発生します。

バックスタックの 2 番目のフラグメントを使用しているときに、3 番目のフラグメントを非表示にします。2 番目と 3 番目のフラグメントはどちらも onrefresh を呼び出していますが、3 番目のフラグメントは表示されません。

何が起こっているのか、なぜこれが簡単ではないのか、私は混乱しています。

以下は、私が一般的に取得するエラーです 03-27 15:26:31.029: E/AndroidRuntime(5505): java.lang.IllegalStateException: Fragment already added: Fragment3{41f2e390 #2 id=0x1020002 fragment3}

4

2 に答える 2

1

上記が機能しない理由を知りたいです。しかし、私の修正は、フラグメントとタブなしで別のアクティビティを作成することでした。それはうまくいくようです。しかし、タブを変更したり、フラグメントごとにタブを変更したりするつもりがなかったら、私は興味があります。

于 2013-03-28T21:12:04.640 に答える
0

同様の状況がありました-NAVIGATION_MODE_LISTタブの代わりに使用しただけです。別のフラグメントからフラグメントを呼び出すと、同様の問題が発生します。たとえば、リスト項目をクリックして項目の詳細を開きます。

ここで、メイン アクティビティからすべてのフラグメントを呼び出して、アクションバーの設定を制御できるようにします。ナビゲーションリストが消えるときはいつでも、NAVIGATION_MODE_STANDARDフラグメントが呼び出されたときに呼び出しNAVIGATION_MODE_LIST、他のフラグメントに対して呼び出すだけです。

于 2014-08-01T15:54:44.247 に答える