当用户按下后退键并尝试关闭对话框时,我需要捕获一个事件 我有这样的代码
AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create();
alertDialog.setTitle("Caution");
alertDialog.setMessage("Alert");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
} });
alertDialog.show();
}
现在我已经给了用户一个选项,但是假设他按下后退键然后我需要执行一些其他操作。如何做到这一点?
答案 0 :(得分:26)
这会对你有所帮助
alertDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
// Your code ...
}
});
答案 1 :(得分:1)
您可以捕获后退键事件 当您的警报出现时,将某个布尔值设置为true
AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create();
alertDialog.setTitle("Caution");
alertDialog.setMessage("Alert");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
} });
isAlertShowing = true; // set to true for alert
alertDialog.show();
}
然后在事件中
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if(isAlertShowing)
{
// perform your task here
}
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:1)
还有
alertDialog.setOnDismissListener(dialog -> { /* code goes here */ });
似乎特别处理了解雇事件。
答案 3 :(得分:0)
创建一个用于管理后退键事件的按钮。现在在onClick事件中尝试提供下面给出的代码。
back_key.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// Your Tracking Code
}
});