DialogFragment 生命周期详解
public class DialogHelper extends DialogFragment {
public DialogHelper() {
}
/**
* 当Activity与Fragment发生关联时调用(已废弃,但是还是调用了)
*
* @param activity
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
/**
* 当Activity与Fragment发生关联时调用
*
* @param context
*/
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
/**
* 初始化Fragment。可通过参数savedInstanceState获取之前保存的值
* <p>
* parentId:因不可抗力,诸如横竖屏切换、分屏、折叠屏切换等可能造成DialogFragment重启,
* 为保证重启后功能正常运行,因此需要保存自己爹(BaseDialog)的id,方便重新绑定到BaseDialog
*
* @param savedInstanceState 保存的数据
*/
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
* 在onCreateDialog里设置dialog监听函数,如对返回键的监听。
* 重写以生成自己的对话框,通常用于显示AlertDialog,而不是常规对话框;
* 执行此操作时,不需要实现OnCreateView),因为AlertDialog会处理自己的内容。
*
* @param savedInstanceState 保存的数据
* @return
*/
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
}
/**
* 让Fragment实例化View。
* 在onCreateView中进行view的初始化,并且解析savedIsntanceState Bundle数据,处理DialogFragment被回收后进行重建的数据处理逻辑。
*
* @param inflater xml --> view
* @param container 容器
* @param savedInstanceState 保存的数据
* @return
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
/**
* 紧随onCreateView调用,表示view已初始化完成。
* onViewCreated紧跟在onCreateView之后执行,执行界面初始化完成之后的一些操作,如动画效果。
*
* @param view 创建好的布局
* @param savedInstanceState 保存的数据
*/
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
/**
* 执行该方法时,与Fragment绑定的Activity的onCreate方法已经执行完成并返回,
* 在该方法内可以进行与Activity交互的UI操作,所以在该方法之前Activity的onCreate方法并未执行完成,如果提前进行交互操作,会引发空指针异常。
*
* @param savedInstanceState
*/
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
/**
* 执行该方法时,Fragment由不可见变为可见状态。
*/
@Override
public void onStart() {
super.onStart();
}
/**
* 执行该方法时,Fragment处于活动状态,用户可与之交互。
*/
@Override
public void onResume() {
super.onResume();
}
/**
* 执行该方法时,Fragment处于暂停状态,但依然可见,用户不能与之交互。
*/
@Override
public void onPause() {
super.onPause();
}
/**
* 执行该方法时,Fragment完全不可见。
*/
@Override
public void onStop() {
super.onStop();
}
/**
* 销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。
* 通常在ViewPager+Fragment的方式下会调用此方法。
*/
@Override
public void onDestroyView() {
super.onDestroyView();
}
/**
* 销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。
*/
@Override
public void onDestroy() {
super.onDestroy();
}
/**
* 解除与Activity的绑定。在onDestroy方法之后调用。
*/
@Override
public void onDetach() {
super.onDetach();
}
/**
* 在onSaveInstanceState中保存重构页面需要的数据。
*
* @param outState
*/
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
// ---------------------------------------------------------------------------------------------
/**
* 取消对话框时将调用此方法。onCancel会调用onDismiss
*
* @param dialog
*/
@Override
public void onCancel(@NonNull DialogInterface dialog) {
super.onCancel(dialog);
}
/**
* 关闭对话框时将调用此方法。
*
* @param dialog
*/
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
/**
* 显示
*
* @param manager
* @param tag
*/
@Override
public void show(FragmentManager manager, String tag) {
}
@Override
public void dismiss() {
try {
super.dismissAllowingStateLoss();
} catch (Exception e) {
}
}
@Override
public void setStyle(int style, int theme) {
super.setStyle(style, theme);
}
}
网友评论