使用场景:我的项目中登录完成之后,需要弹出一个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。
本文探讨了在Android应用中,当用户在弹出完善信息的对话框后点击返回键,如何避免触发两次返回事件导致的两个提示对话框的问题。通过细致地分析Android按键事件的ACTION_DOWN和ACTION_UP,提出了在对话框的OnKeyListener中添加正确的事件过滤逻辑,确保用户操作流畅且逻辑正确。
1332

被折叠的 条评论
为什么被折叠?



