欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DialogFragment的一些问题

程序员文章站 2022-04-09 22:21:39
...

dialogFragment投入使用有几个月了,今天因为功能的原因需要设置dismiss监听,在onCreateDialog中给dialog设置的监听,结果运行时监听不到?

经过打log发现dismiss的时候没有走dismiss和dialog的DialogInterface.OnDismissListener,而是直接走了onDestroy?

@Override
    public void dismiss() {
        super.dismiss();
        LogUtil.i("GisFragment","dismiss"); //压根没走
    }

 @Override
    public void onDestroy() {
        super.onDestroy();
        mListener.close();
        LogUtil.i("GisFragment","destory");//走了
    }

好吧,结论是在onDestroy中调用了方法回传了关闭信息

然后发现有网友说起监听onKeyDown的问题,经过测试发现有用,留存一下:在onCreateView中加入this.getDialog().setOnKeyListener()

 @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        this.getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                if(keyCode ==KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME){
                    return true;
                }else {
                    return false;
                }
            }
        });
        }