私のプロジェクトでは1つのアクティビティしか使用せず、すべての画面はフラグメントによって実装されています。私のActivity
はちょうどfragment
のナビゲーション、権限の処理、警告ダイアログなどの表示を制御します。 私はよくこのような状況に遭遇します。問題は、上記のすべてのケースで、許可を要求したり、アラートを表示したりするように、Activity
とFragment
はになります。この操作の直後に私が別の画面に行くと、つまりFragment Transaction
を実行すると、 Activity
はまだの状態になり、クラッシュする可能性があります。私はActivity
がresume
の状態になるまで待たなければなりません。 1つの使用例は、スプラッシュ画面で許可を求めています。権限を要求した後、許可されている場合、私は別の断片であるホーム画面を起動する必要があります。したがって、許可コールバックの後に実行される次のコードは、フラグメントトランザクションです。dialog
がActivity
の上に来たというアクセス許可のために、アクティビティによってresume
に戻る時間がかかるため、私は待つ必要がありますいつかfragment transaction
を実行します。onResumeの前にフラグメントトランザクション中にIllegalStateExceptionを防ぐ最良の方法は
onActivityResult
と同じです。 現在、私はそれを迅速に修正しています。私は、フラグメントトランザクションが実行可能であるアクティビティのメンバーとして実行可能ファイルを保持しています。そして私はIllegalStateException
をキャッチし、catch
では、私はフラグメントトランザクションをRunnableに割り当てています。アクティビティのたびにonResume
Runnableがnullでない場合は実行しています。 onActivityResult
の同じ修正もあります。私はメンバーにとどまって、アクティビティのonResume
の断片に届けます。 しかし、私はそれが良い習慣だとは思わない。このエラーを処理するために、アクティビティで非常に多くのメンバーを使用しているため、コードは醜いように見えます。 この問題を解決する良い方法はありますか?
投稿コード –