【问题标题】:AlertBuilder showing an exception. DialogBox is not opening [duplicate]显示异常的警报生成器。对话框未打开[重复]
【发布时间】:2018-05-23 08:57:56
【问题描述】:

在下面的代码中我想在mIndex为0时打开对话框。

代码位于“if”部分。但是没有打开对话框而是显示以下异常。

代码:

mIndex = (mIndex+1)%mQuestionBank.length;
    if(mIndex == 0 )
    {
        Log.d("Quizzler", "Inside IF");
        AlertDialog.Builder alert = new AlertDialog.Builder(getApplicationContext());
        alert.setTitle("Game Over");
        alert.setCancelable(false);
        alert.setMessage("Your score is "+mScore);
        alert.setPositiveButton("Close Application", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
        alert.show();
    }

例外:

FATAL EXCEPTION: main
                                                                  Process: com.londonappbrewery.quizzler, PID: 11560                                                                               android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
                                                                               at android.view.ViewRootImpl.setView(ViewRootImpl.java:714)
                                                                               at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
                                                                               at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
                                                                               at android.app.Dialog.show(Dialog.java:316)
                                                                               at android.app.AlertDialog$Builder.show(AlertDialog.java:1112)
                                                                               at com.londonappbrewery.quizzler.MainActivity.updateQuestion(MainActivity.java:100)
                                                                               at com.londonappbrewery.quizzler.MainActivity.access$100(MainActivity.java:16)
                                                                               at com.londonappbrewery.quizzler.MainActivity$1.onClick(MainActivity.java:69)
                                                                               at android.view.View.performClick(View.java:5609)
                                                                               at android.view.View$PerformClick.run(View.java:22263)
                                                                               at android.os.Handler.handleCallback(Handler.java:751)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:154)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个

        AlertDialog.Builder alert = new AlertDialog.Builder(YourActivity.this);
        alert.setTitle("Game Over");
        alert.setCancelable(false);
        alert.setMessage("Your score is "+mScore);
        alert.setPositiveButton("Close Application", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
    
        AlertDialog alertDialog=alert.create();
        alertDialog.show();
    

    【讨论】:

    • 好的太好了!代码运行良好。
    【解决方案2】:

    代替

    new AlertDialog.Builder(getApplicationContext());
    

    尝试使用

    new AlertDialog.Builder(MainActivity.this);
    

    【讨论】:

    • 好的太好了!代码运行良好。
    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多