什么是之间的差异onCreate(),onCreateView()以及onActivityCreated()将它们各自用于片段和什么?
android oncreate android-lifecycle android-fragments fragment-lifecycle
通过这个答案,
我无法理解将onClickListener()- insideonCreateView()或 inside放在哪里onActivityCreated(),下面的代码更好地描述了它:
代码 A:(设置按钮点击监听器内onActivityCreated())
private FloatingActionButton bt;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do something.
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_frag, container, false);
bt = (FloatingActionButton) v.findViewById(R.id.fab);
return v;
}
Run Code Online (Sandbox Code Playgroud)
CODE B:(设置按钮点击监听器里面onCreateView())
private FloatingActionButton bt;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 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)
没有任何理由,我应该选择onActivityCreated过 onCreateView?