Android(Fragment) - 是否建议在 onActivityCreated 方法中初始化视图对象?

4 android android-fragments fragment-oncreateview

View片段的变量可以通过onCreateView这种方式在方法中初始化。这里TextView是片段内部。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmant_two,container,false);
    if(savedInstanceState == null)
    {

    }
    else
    {
        String data = savedInstanceState.getString("data");
        TextView myText = (TextView)view.findViewById(R.id.text_view);
        myText.setText(data);
    }


    return view;


}
Run Code Online (Sandbox Code Playgroud)

但是我发现里面有一个view是onActivityCreated 用这种方式初始化的。

textView = (TextView) getActivity().findViewById(R.id.text_view);
Run Code Online (Sandbox Code Playgroud)

没有任何理由,我应该选择onActivityCreatedonCreateView

Abh*_*ain 6

textView = (TextView) getActivity().findViewById(R.id.text_view);
Run Code Online (Sandbox Code Playgroud)

这将尝试R.id.text_view从您的活动布局中找到带有 id 的视图,而不是您的片段。如果片段本身中存在具有该 id 的视图,那么您应该onCreateView在片段中使用该方法。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragmant_two,container,false);
    TextView textView = (TextView) view.findViewById(R.id.text_view);
    // bind your data here.
    return view;
}
Run Code Online (Sandbox Code Playgroud)