使用场景:我的项目中登录完成之后,需要弹出一个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。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐