Androidのドキュメントではフラグメントトランザクション非常によく似た 2 つの方法に気付きました:detach
とremove
。あちらの説明では、それぞれをいつ使用するかについてあまり詳しく説明されていないようですが、私の知る限りでは、どちらも同じように見えます。
では、これら 2 つの方法の違いは何でしょうか?
ベストアンサー1
detachメソッドはUIからフラグメントを削除しますが、その状態はフラグメントマネージャによって維持されます。つまり、ViewHierarchyを変更してattachメソッドを呼び出すことで、このフラグメントを再利用できます。
削除すると、フラグメント インスタンスを再アタッチできなくなります。フラグメント トランザクションに再度追加する必要があります。
ソースコメント
フラグメントがデタッチされるとき、その onPause、onStop、onDestroyView メソッドのみが (この順序で) 呼び出されることに気付くでしょう。一方、フラグメントが削除されるとき、その onPause、onStop、onDestroyView、onDestroy、onDetach メソッドが (この順序で) 呼び出されます。同様に、フラグメントをアタッチするときは、フラグメントの onCreateView、onStart、onResume メソッドのみが呼び出され、フラグメントを追加するときは、フラグメントの onAttach、onCreate、onCreateView、onStart、onResume メソッドが (この順序で) 呼び出されます。– アディル・フセイン