【发布时间】:2017-09-16 18:46:02
【问题描述】:
https://github.com/xxv/android-lifecycle 显示片段 onAttach、onCreate、on CreateView 和 onActivityCreated 在活动 onStart 之前被调用。但是,我尝试记录以下内容:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.e("TRACE", "MainActivity onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment firstFragment = FirstFragment.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, firstFragment).commit();
}
@Override
public void onStart() {
Log.e("TRACE", "MainActivity onStart");
super.onStart();
}
FirstFragment 看起来像这样:
public class FirstFragment extends Fragment {
public FirstFragment() {
// Required empty public constructor
}
public static FirstFragment newInstance() {
FirstFragment fragment = new FirstFragment();
return fragment;
}
@Override
public void onAttach(Context context) {
Log.d("TRACE", "FirstFragment onAttach");
super.onAttach(context);
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("TRACE", "FirstFragment onCreate");
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("TRACE", "FirstFragment onCreateView");
return inflater.inflate(R.layout.fragment_first, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
Log.d("TRACE", "FirstFragment onActivityCreated");
super.onActivityCreated(savedInstanceState);
}
它打印了这个:
- MainActivity onCreate
- MainActivity onStart
- FirstFragment onAttach
- 创建第一个片段
- CreateView 上的第一个片段
- ActivityCreated 上的FirstFragment
- MainActivity onResume
【问题讨论】:
-
那个链接和我的一样。它指出片段 onActivityCreated 在 Activity onStart 之前调用,但我的日志语句显示它是在之后调用的