美文网首页
Android-DialogFragment

Android-DialogFragment

作者: 有腹肌的豌豆Z | 来源:发表于2020-12-25 09:51 被阅读0次

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);
    }

}

相关文章

网友评论

      本文标题:Android-DialogFragment

      本文链接:https://www.haomeiwen.com/subject/djjbnktx.html