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