0

フラグメント内にインターフェイスを作成し、それを親アクティビティに実装しました。

コードが次のようになると、すべてが完全に機能します。

public class ExercisesCatsFragment extends Fragment {
OnCategorySelected mCallback;
...
    @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mCallback = (OnCategorySelected) activity;
}

しかし、クラス自体で mCallback をインスタンス化しようとすると、インターフェイスが呼び出されたときに nullpointerexception が発生します。動作しないコードは次のようになります (onAttach() のオーバーライドなし):

public class ExercisesCatsFragment extends Fragment {
OnCategorySelected mCallback = (OnCategorySelected) this.getActivity();

その背後にある理由を知っている人はいますか?親アクティビティは FragmentActivity です。これが原因でしょうか?

ありがとうございました

4

1 に答える 1

4

this.getActivity()フラグメントの本体で呼び出している2番目の(機能していない)コードでは、フラグメントはアタッチされていないActivityため、this.getActivity()に戻りnullます。

最初のコードブロックで表示する方法で、またはのonCreate(...)方法で実行してFragmentください。

于 2012-09-21T22:55:39.730 に答える