TV端定义定义一个dialog, 监听返回键监听setOnKeyListener 按下返回键, 会执行两次。。。

使用场景:我的项目中登录完成之后,需要弹出一个dialog让用户完善信息,如果中途用户不想填写信息了(TV端操作比较不方便),按下返回键,在弹出一个提示dialog,提示用户是否退出,问题出在这里 ,按下返回键,会初始化两个提示dialog。


原因: Android一次单击操作定义了两个事件,ACTION_DOWN和 ACTION_UP,即按下和松手两个动作。需要添加判断 if(event.getAction()==KeyEvent.ACTION_DOWN)或者if(event.getAction()==KeyEvent.ACTION_UP)


完整判断:

mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

            @Override            

            public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {

 if(i==KeyEvent.KEYCODE_BACK && keyEvent.getAction()==KeyEvent.ACTION_DOWN){

                    warningsDialog = new WarningsDialog(mContext);

                     warningsDialog.setOnSureClick(new WarningsDialog.OnSureClick() {

                        @Override                       

                       public void OnSureClickListener() {

                            warningsDialog.dismiss();

                            mDialog.dismiss();

                        }

                    });

                    warningsDialog.show();

                    return false;

                }else {

                    return true;

                }

            }

        });

提示:mDialog是我完善信息的dialog,WarningsDialog是我的提示dialog。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容