有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java My app崩溃致命异常无法添加窗口

我对Android开发非常陌生,我创建了这个问答游戏。我的问题是,应用程序在打开几分钟后随机崩溃。撞车是随机发生的,所以我不知道是什么原因导致了撞车。下面是应用程序崩溃时的logcat错误代码

11-16 18:39:10.573 19023-19023/com.noxeternal.quizgame E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.noxeternal.quizgame, PID: 19023
                                                                     安卓.view.WindowManager$BadTokenException: Unable to add window -- token 安卓.os.BinderProxy@d70d3e4 is not valid; is your activity running?
                                                                         at 安卓.view.ViewRootImpl.setView(ViewRootImpl.java:679)
                                                                         at 安卓.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
                                                                         at 安卓.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
                                                                         at 安卓.app.Dialog.show(Dialog.java:322)
                                                                         at com.noxeternal.quizgame.MainActivity.gameOver(MainActivity.java:287)
                                                                         at com.noxeternal.quizgame.MainActivity.access$300(MainActivity.java:19)
                                                                         at com.noxeternal.quizgame.MainActivity$9.onFinish(MainActivity.java:307)
                                                                         at 安卓.os.CountDownTimer$1.handleMessage(CountDownTimer.java:127)
                                                                         at 安卓.os.Handler.dispatchMessage(Handler.java:102)
                                                                         at 安卓.os.Looper.loop(Looper.java:154)
                                                                         at 安卓.app.ActivityThread.main(ActivityThread.java:6176)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
                                                                         at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:778)

以下是logcat中提到的代码

private void gameOver(){
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
    alertDialogBuilder
            .setMessage("Game over! Your score is " + mScore + " points.")
            .setCancelable(false)
            .setPositiveButton("NEW GAME",
                    new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i){
                            finish();
                            startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        }
                    })
            .setNegativeButton("Exit",
                    new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i){
                            Intent intent = new Intent(MainActivity.this, MainMenu.class);
                            startActivity(intent);
                            finish();
                        }
                    });
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
}

private void startTimer(){
    long millisInFuture = 60000;
    long countDownInterval = 1000;

    timer.setText("Time remaining: " + timer);
    countDownTimer = new CountDownTimer(millisInFuture, countDownInterval) {
        @Override
        public void onTick(long millisUntilFinished) {
            if(isPaused){
                cancel();
            } else {
                timer.setText("Time remaining: " + millisUntilFinished / 1000);
                remainingTime = millisUntilFinished;
            }
        }
        @Override
        public void onFinish() {
            gameOver();
        }
    };
    countDownTimer.start();
}

谢谢大家!


共 (2) 个答案

  1. # 1 楼答案

    尝试修改此代码:

     @Override
     public void onClick(DialogInterface dialogInterface, int i){
         finish();
         startActivity(new Intent(getApplicationContext(),MainActivity.class));
     }
    

    为此:

    @Override
    public void onClick(DialogInterface dialogInterface, int i) {         
         startActivity(new Intent(getApplicationContext(),MainActivity.class));
         finish();
    }
    
  2. # 2 楼答案

    当您查看错误时,您可能会从给出错误的行中找到一些“链接”,您可以单击并查找。在您的情况下,错误出现在:

    主要活动。第287行的类:MainActivity.java:287

    主要活动。第19行的类:MainActivity.java:19

    主要活动。第307行的类:MainActivity.java:307

    我认为这可能有助于识别错误