web-dev-qa-db-ja.com

Android:ネストされたフラグメントの親フラグメント

ネストされたフラグメントのgetParentFragment()nullを返しています。 nullを取得することは、フラグメントがネストされたコンテナフラグメントではなく、アクティビティに添付されていることを意味します。しかし、子FragmentManagerを使用して親フラグメント内に子フラグメントを明示的にネストしているため、nullを取得すべきではないと考えています。何が欠けているのか教えてもらえますか?

親フラグメント

public class UsageBreakUp extends Fragment implements Filter.OnFragmentInteractionListener {

  ....

  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getChildFragmentManager().beginTransaction().add(R.id.filter, new Filter()).commit();
    }

...

}

子フラグメント

public class Filter extends Fragment {

...


    public Filter() {
        if (getParentFragment() == null)
            Log.d(LOG_TAG, "parent fragment is null");
    }

...

}
21
Abhijith Madhav

子フラグメントのコンストラクターでgetParentFragment()を呼び出していたため、子フラグメントが完全に作成される前でした。 getParentFragment()onCreateView()にシフトすると、問題が解決しました。 getParentFragment()を呼び出して親フラグメントが子フラグメント相互作用リスナーを実装しているかどうかを確認していたので、シフトは問題ではありませんでした。

37
Abhijith Madhav