私があなただったら、フラグメント 'onCreateView()
を使用してビューをバインドし、Activity
の親にonActivityCreated()
のインターフェイスでビューを知らせるようにします。
あなたのインターフェースは
public interface ViewInterface {
void onLinearLayoutCreated(LinearLayout layout);
void onRelativeLayoutCreated(RelativeLayout layout);
}
し、各フラグメントで
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.fragment_layout, inflater, false);
mLinearLayout = layout.findViewById(R.id.linear_layout);
...
return layout;
}
...
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
try {
ViewInterface callback = (ViewInterface) getActivity();
callback.onLinearLayoutCreated(mLinearLayout);
} catch (ClassCastException e) {
Log.e("ERROR", getActivity().getName()+" must implement ViewInterface");
}
...
}
ようになり、その後、あなたの親Activity
にできViewInterface
void onLinearLayoutCreated(LinearLayout layout) {
//do something with LinearLayout
...
}
getViewメソッド(実装)フラグメントビューを返します。そのonCreateView()が完了した後でなければなりません。それ以外の場合はnullを返します。 – Bob
MainActivityでこれらのサブビューを取得する必要があるのはいつですか? MainActivityで使用する必要があります。 –