0

Fragment がインターフェイスと別のクラスを実装している場合、アクティビティがフラグメントへの参照を保持しているとします。

  IFragmentInterface myFragmentReference;

フラグメントのライフサイクルのどの時点で利用できなくなりますか? myFragmentReference が null かどうかを確認することで、これを検出できますか? ( FragmentManager クラスがあることは承知しています)。

4

2 に答える 2

0

が呼び出された後、Fragmentそれ自体はFragmentもう使用できません。onDestroy()参照は、保持している限り有効です。インターフェースからすべてのメソッドにアクセスできますが、Fragmentもはやそれを使用することはできません。

于 2013-07-24T17:55:51.267 に答える
0

参照がいつ無効になるかは正確にはわかりませんが、フラグメントの Android 開発者ページ ( http://developer.android.com/guide/components/fragments.html ) を見ると、onDetach にあるように見えます。

参照が null ではないため、myFragmentReference が null であるかどうかを確認しても、これを検出することはできません。存在しない Fragment を指しているだけです。

これを処理する最善の方法は、フラグメントで何かをする必要があるときはいつでも次のようなものを使用することです:

FragmentManager fm = getFragmentManager();
IFragmentInterface myFragmentReference = (IFragmentInterface) fm.findFragmentByTag(getTag());

findFragmentByTag() を使用するには、フラグメントを追加するときにタグを設定する必要があります。

于 2013-07-24T17:52:05.057 に答える