私のアプリには、いくつかのフラグメントとアクティビティがあります。メインの親アクティビティのライフサイクルの過程で、アプリは他のアクティビティでユーザーに情報/オプションを提示します。
Fragments のドキュメントには、commit() に関する次の規定があります。
注意: commit() を使用してトランザクションをコミットできるのは、アクティビティがその状態を保存する前 (ユーザーがアクティビティを離れたとき) のみです。それ以降にコミットしようとすると、例外がスローされます。これは、アクティビティを復元する必要がある場合、コミット後の状態が失われる可能性があるためです。コミットを失っても構わない状況では、commitAllowingStateLoss() を使用します。
問題は、親アクティビティに戻った後、アプリでナビゲーションを設計した方法に不可欠な FragmentTransactions を使用できなくなることです。
私が考えた 1 つの解決策は、アクティビティをフラグメントに変更することですが、私のアプリは最終的にアプリ内課金も使用し、常に独自のアクティビティを開始すると考えています。これは大きな制限のように思えます。開発のある時点で、別のアクティビティを表示しなければならなくなるでしょう。
commitAllowingStateLoss() を使用することでおそらく回避できますが、Android タブレット アプリ開発の主要な概念が欠けているように感じます。FragmentTransactions をコミットする機能を失うことなく、アクティビティを開始してから親アクティビティ (フラグメントを管理する) に戻る方法はありますか?