14

私は最近、フラグメントを使って多くの作業を行っていますが、フラグメントの親アクティビティへの参照を使用するためのベスト プラクティスについて知りたいと思っていました。getActivity() を呼び出し続けるか、onActivityCreated コールバックで parentActivity 変数を初期化する方がよいでしょうか。

4

3 に答える 3

21

これは、実際には Fragments に関する Android の公式ドキュメントに含まれています。親アクティビティ (Toast、Dialog など) のコンテキストが必要な場合は、 を呼び出しますgetActivity()。Fragment のインターフェイスでコールバック メソッドを呼び出す必要がある場合は、 でインスタンス化されたコールバック変数を使用する必要がありますonAttach(...)

public static class FragmentA extends ListFragment {
    ExampleFragmentCallbackInterface mListener;
    ...
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mListener = (ExampleFragmentCallbackInterface ) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString() + " must implement ExampleFragmentCallbackInterface ");
        }
    }
    ...
}

ソース

于 2012-10-29T05:19:01.110 に答える
9

getActivity() が最適です。格納する変数を維持する必要はありません (常に、アプリ サイクルまで!)。必要に応じて、メソッドを呼び出して使用してください! :)

于 2012-10-29T05:14:28.530 に答える
-1

いくつかのアクティビティから呼び出されるフラグメントにいる場合、親アクティビティへの参照を取得するには、onViewCreated() 内で呼び出すか、後でフラグメントのメソッドを直接フックします。親アクティビティが null でないことを確認するだけです。

getActivity()

本当に確認したい場合は、最初に確認する必要があります

if (getActivity() != null){ // then your logic with getActivity()}
于 2016-11-22T01:40:22.950 に答える