android - Android 中的是/否警报对话框

标签 android

我想在 android onBackPressed() 事件上显示一个警告对话框

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {

    //@Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //Yes button clicked
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked
            break;
        }
    }
};

但在 onBackPressed() 事件中执行时出现错误

@Override
public void onBackPressed() {
    super.onBackPressed();  
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
        .setNegativeButton("No", dialogClickListener).show();

}

错误: “com.java.mypkg 泄露了最初添加到此处的窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@406c3798

我是不是漏掉了什么。请帮忙。

最佳答案

是的,不要根据之前用户的响应调用它。 super.onBackPressed();onStop 方法的 Activity 。而不是 onBackPressed(); 您可以使用 onKeyDown 来满足您的要求。如果您需要在按下后退按钮时打开一个 AlertDialog,您可以简单地尝试使用 KeyEvent

例如——

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    switch(keyCode)
    {
    case KeyEvent.KEYCODE_BACK:
        AlertDialog.Builder ab = new AlertDialog.Builder(AlertDialogExampleActivity.this);
        ab.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
        .setNegativeButton("No", dialogClickListener).show();
        break;
    }

    return super.onKeyDown(keyCode, event);
}

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //Yes button clicked
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked
            break;
        }
    }
};

当您重写onKeyDown 方法时,它将使用您的KEYCODE_BACK 检测返回键。

希望对你有帮助。

关于android - Android 中的是/否警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715371/

相关文章:

java - 使用 convertView 和自定义数据 listView 时出现 NullPointerException

java - TabLayout 上的 setupWithViewPager(android.support.v4.view.ViewPager) 无法应用于 (androidx.viewpager..widget.ViewPager)

android - Android 是如何执行权限的?

android - HTML5 地理定位在 Android 模拟器中不起作用

java - 无法使用某些 L SDK 功能

Android - 带有自定义 BaseAdapter 的 Gridview,点击查看位置

Android Studio 1.2.1.1 - 找不到样式 'textViewStyle'

android - 仅获取一次随机数据的数据库查询

android - 检查 Firebase android 中的最后一个 child 是否

android - 调用不同类中的方法时如何获取上下文?