Fragment がインターフェイスと別のクラスを実装している場合、アクティビティがフラグメントへの参照を保持しているとします。
IFragmentInterface myFragmentReference;
フラグメントのライフサイクルのどの時点で利用できなくなりますか? myFragmentReference が null かどうかを確認することで、これを検出できますか? ( FragmentManager クラスがあることは承知しています)。
Fragment がインターフェイスと別のクラスを実装している場合、アクティビティがフラグメントへの参照を保持しているとします。
IFragmentInterface myFragmentReference;
フラグメントのライフサイクルのどの時点で利用できなくなりますか? myFragmentReference が null かどうかを確認することで、これを検出できますか? ( FragmentManager クラスがあることは承知しています)。
が呼び出された後、Fragment
それ自体はFragment
もう使用できません。onDestroy()
参照は、保持している限り有効です。インターフェースからすべてのメソッドにアクセスできますが、Fragment
もはやそれを使用することはできません。
参照がいつ無効になるかは正確にはわかりませんが、フラグメントの Android 開発者ページ ( http://developer.android.com/guide/components/fragments.html ) を見ると、onDetach にあるように見えます。
参照が null ではないため、myFragmentReference が null であるかどうかを確認しても、これを検出することはできません。存在しない Fragment を指しているだけです。
これを処理する最善の方法は、フラグメントで何かをする必要があるときはいつでも次のようなものを使用することです:
FragmentManager fm = getFragmentManager();
IFragmentInterface myFragmentReference = (IFragmentInterface) fm.findFragmentByTag(getTag());
findFragmentByTag() を使用するには、フラグメントを追加するときにタグを設定する必要があります。