2016-04-06 9 views
1

アクティビティにisDestroyed()がありますが、Fragmentに対応するアクティビティが見つかりません。フラグメントにisDestroyed()はありますか?

自分でフラグを設定するためにonDestroyed()をオーバーライドできますが、既存の解決策があると仮定します。

フラグメント内のUIを更新する前に、フラグメントが破損しているかどうかをネットワークの応答で確認しようとしています。

ご協力いただきますようお願い申し上げます。ありがとう!

+0

にブール変数を設定することができますか? –

+0

こんにちは@DougStevenson、私はフラグメントが破棄されているかどうか、ネットワークの応答で、UIコンポーネントを更新するかどうかを判断しようとしています。 – wooohoh

答えて

2

他のフラグメントの親としてフラグメントを作成し、次のコードを使用して破棄された機能をチェックすることができます。

public abstract class ASafeFragment extends Fragment 
{ 
    protected boolean isSafe() 
    { 
     return !(this.isRemoving() || this.getActivity() == null || this.isDetached() || !this.isAdded() || this.getView() == null); 
    } 
... 
} 

またはdeveloperサイトから

public static boolean isSafeFragment(Fragment frag) 
{ 
    return !(frag.isRemoving() || frag.getActivity() == null || frag.isDetached() || !frag.isAdded() || frag.getView() == null); 
} 
0

私は、フラグメントが破損していないかどうかを確認するために、 レスポンスで、UIコンポーネントを更新するかどうかを判断しています。 UIが破壊されますので、onDestroyView()が呼び出された後、UIの更新ができないため

あなたはonDestroyView()を使用することができます。 UIを更新する前に、getActivity()nullかどうかを確認できます。

0

: "アクティビティが破棄されると、すべてのフラグメントが破棄されます。"すべてのフレグメントはアクティビティに含まれているため、アクティビティをチェックする必要があります。

何isDestroyedは(ありません)断片

+0

洞察に感謝します。私は今代替案があることを知っています。 – wooohoh

0

のために進行中である可能性があり、作業に対処する方法を決定するための最も防弾パターンがLoaderにその仕事を置くことです。フラグメント/アクティビティのLoaderManagerは、その結果を処理する適切な時期になったときにのみLoaderCallbacksを呼び出すことに精通します。あるいは、構成変更後の置換フラグメント/アクティビティの結果を保持することさえ可能です。これは余分なコーディングですが、中断や取り消しから復旧する最善の方法です。

+0

ローダーをご紹介いただきありがとうございます。私はDocとチュートリアルを読んで、コンセプトは良く見えますが、私の単純な作業ではやや面倒です。 – wooohoh

1

アクティビティが破棄された場合、すべてのフラグメントが破棄されるため、アクティビティが破棄された場合、getActivity().isDestroyed()がtrueを返すという簡単な応答が発生する可能性があります。フラグメントのネストは、一般的には良い考えではありません。

また、断片onDestroyView()方法のチェックを無効にして、あなたはそれが破壊されていますかどうかを確認するためには、このチェックを達成するために何をしようとしている真の

関連する問題