Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的警报对话框会崩溃_Android_Android Alertdialog - Fatal编程技术网

Android 为什么我的警报对话框会崩溃

Android 为什么我的警报对话框会崩溃,android,android-alertdialog,Android,Android Alertdialog,最近,我学习了一个关于如何创建警报对话框的教程,当我单击“删除”按钮时,应该会在删除之前显示警报,但它却崩溃了。有人能告诉我我的错误在哪里吗 下面是我的代码: // Delete button click event btnDeleteEvent.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { // alerting user bef

最近,我学习了一个关于如何创建警报对话框的教程,当我单击“删除”按钮时,应该会在删除之前显示警报,但它却崩溃了。有人能告诉我我的错误在哪里吗

下面是我的代码:

// Delete button click event
    btnDeleteEvent.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            // alerting user before deleting event
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    getApplicationContext());
            // set title
            alertDialogBuilder.setTitle("Warning!");
            // set dialog message
            alertDialogBuilder
                    .setMessage("Are you sure to delete event?")
                    .setCancelable(false)
                    .setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if yes, deleting event in background
                                    // thread
                                    new DeleteEvent().execute();
                                }
                            })
                    .setNegativeButton("No",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // if this button is clicked, just close
                                    // the dialog box and do nothing
                                    dialog.cancel();
                                }
                            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
        }
    });
这是我的日志:

08-18 02:02:45.804: E/AndroidRuntime(1288): FATAL EXCEPTION: main
08-18 02:02:45.804: E/AndroidRuntime(1288): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.view.ViewRoot.setView(ViewRoot.java:509)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.app.Dialog.show(Dialog.java:241)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at com.stts.sparetimetradingsystem.employer.EditEventActivity$5.onClick(EditEventActivity.java:270)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.view.View.performClick(View.java:2408)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.view.View$PerformClick.run(View.java:8816)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.os.Handler.handleCallback(Handler.java:587)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.os.Looper.loop(Looper.java:123)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at android.app.ActivityThread.main(ActivityThread.java:4627)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at java.lang.reflect.Method.invokeNative(Native Method)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at java.lang.reflect.Method.invoke(Method.java:521)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-18 02:02:45.804: E/AndroidRuntime(1288):     at dalvik.system.NativeStart.main(Native Method)

尝试使用活动的上下文而不是应用程序上下文

尝试使用活动的上下文而不是应用程序上下文

使用对话框。dismise()甚至将getApplication上下文更改为您的活动。此

您可以参考

使用dialog.disease(),甚至将getApplication上下文更改为您的Activity.this

您可以参考根据,您应该在构造函数中使用
this
而不是
getApplicationContext()

public void onClick(View arg0) {
    // alerting user before deleting event
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
根据,您应该在构造函数中使用
this
而不是
getApplicationContext()

public void onClick(View arg0) {
    // alerting user before deleting event
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

他是对的,更准确地说是AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(ouractivity.this);嗯,这不应该是你的活动吗。这?非常感谢你对人们的帮助!他是对的,更准确地说是AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(ouractivity.this);嗯,这不应该是你的活动吗。这?非常感谢你对人们的帮助!