Fragment的状态与回调
Fragment的状态
运行状态:当一个Fragment所关联的Activity正处于运行状态时,该Fragment也处于运行状态。
暂停状态:当一个Activity进入暂停状态时(由于另一个未占满屏幕的Activity被添加到了栈顶),与它相关联的Fragment就会进入暂停状态。
停止状态:当一个Activity进入停止状态时,与它相关联的Fragment就会进入停止状态,或者通过调用FragmentTransaction的remove()、replace()方法将Fragment从Activity中移除,但在事务提交之前调用了addToBackStack()方法,这时的Fragment也会进入停止状态。
销毁状态:Fragment总是依附于Activity而存在,因此当Activity被销毁时,与它相关联的Fragment就会进入销毁状态。或者通过调用FragmentTransaction的remove()、replace()方法将Fragment从Activity中移除,但在事务提交之前并没有调用addToBackStack()方法,这时的Fragment也会进入销毁状态。
Fragment的回调
onAttach():当Fragment和Activity建立关联时调用。
onCreateView():为Fragment创建视图(加载布局)时调用。
onDestroyView():当与Fragment关联的视图被移除时调用。
onDetach():当Fragment和Activity解除关联时调用。
下图源自官网。
体验Fragment生命周期
public class RightFragment extends Fragment {
public static final String TAG = "RightFragment";
@Override
public void onAttach(Context context){
super.onAttach(context);
Log.d(TAG, "onAttach");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
Log.d(TAG, "onCreateView");
View view = inflater.inflate(R.layout.fragment_right, container, false);
return view;
}
@Override
public void onStart(){
super.onStart();
Log.d(TAG, "onStart");
}
@Override
public void onResume(){
super.onResume();
Log.d(TAG, "onResume");
}
@Override
public void onPause(){
super.onPause();
Log.d(TAG, "onPause");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
public void onDestroyView(){
super.onDestroyView();
Log.d(TAG, "onDestroyView");
}
@Override
public void onDestroy(){
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
public void onDetach(){
super.onDetach();
Log.d(TAG, "onDetach");
}
}