[解決済み] IllegalStateException: タブホストフラグメントで既に追加されたフラグメント
2023-02-13 14:36:58
質問
FATAL EXCEPTION: main
Process: com.example.loan, PID: 24169
java.lang.IllegalStateException: Fragment already added: FormFragment{428f10c8 #1 id=0x7f050055 form}
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1192)
at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722)
at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1533)
at android.support.v4.app.FragmentManagerImpl$2.run(FragmentManager.java:489)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5068)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at dalvik.system.NativeStart.main(Native Method)
ということで、tabhostでビルドしたandroidアプリがあります。全部で3つのタブがあり、その中のtab2にフラグメントトランザクションを行うボタンがあります(フラグメントアクティビティ内の関数を呼び出すことになります)。
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.replace(R.id.realtabcontent, mFrag);
t.addToBackStack(null);
t.commit();
このように実行すると、例外が発生します。
- タブ2の中で、フラグメントを変更するボタンを押します。
- 他のタブに移動する(例:タブ1、タブ3)
- 戻るボタンを押す
- 例外を投げる
どのようにそれを修正するのですか?助けてくれてありがとうございます。
どのように解決するのですか?
同じフラグメントやDialogFragmentを2回追加してから終了させようとすると、この現象が発生します。
を呼び出すだけです。
if(mFragment.isAdded())
{
return; //or return false/true, based on where you are calling from
}
とはいえ、フラグメント内のメソッドにパラメータを渡すだけでUIやデータを更新できるので、古いフラグメントを削除して同じフラグメントを再度追加する理由はないでしょう。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理