【发布时间】:2017-11-16 19:41:43
【问题描述】:
我对 Android 开发非常陌生,我创建了这个问答游戏。我的问题是应用程序在打开几分钟后随机崩溃。崩溃是随机发生的,所以我无法弄清楚导致崩溃的原因。以下是应用程序崩溃时的 logcat 错误代码
11-16 18:39:10.573 19023-19023/com.noxeternal.quizgame E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.noxeternal.quizgame, PID: 19023
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@d70d3e4 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
at android.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 android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:127)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.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();
}
谢谢!
【问题讨论】:
-
当您尝试更新 UI 但活动被破坏时,通常会出现此错误。你能在这里分享你的代码吗?
-
检查您的活动是否在 Manifest.xml 中注册
-
我将编辑我的帖子以分享我的代码。谢谢你们。