View
fragment 的变量可以通过这种方式在onCreateView
方法中初始化。这里的TextView
在 fragment 中。
@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;
}
但是我发现在onActivityCreated
内部有一个view是这样初始化的。
textView = (TextView) getActivity().findViewById(R.id.text_view);
有什么理由让我选择 onActivityCreated
而不是 onCreateView
吗?
最佳答案
textView = (TextView) getActivity().findViewById(R.id.text_view);
这将尝试从您的 Activity 布局中找到 ID 为 R.id.text_view
的 View ,而不是您的 fragment 。如果具有该 ID 的 View 存在于您的 fragment 本身中,那么您应该在 fragment 中使用 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;
}
关于Android(Fragment) - 是否建议在 onActivityCreated 方法中初始化 View 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42574344/