以下のプロジェクトを作成して、正確なコードと何が起こっているかを確認できるようにしました 。
基本的に私がやろうとしているのは、一部のページのタブを非表示にして、他のページに表示することです。
以下は、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}