Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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 BadTokenException-返回按钮_Android - Fatal编程技术网

Android BadTokenException-返回按钮

Android BadTokenException-返回按钮,android,Android,我知道这个话题在网络上被问了数万亿次,但是没有一个地方能回答 在我的应用程序中,我有一个欢迎屏幕。当我端到端运行程序时,一切都正常-打开/关闭活动并显示各种对话框。 但是,当我到达欢迎屏幕并按下后退按钮时,一切都变得一团糟: 1) 我要显示的对话框导致BadTokenException(我使用的是this,而不是getApplicationContext()) 2) 我尝试使用try/catch捕获异常,但它确实通过了showDialog行。但是,在第二节。运行,当到达showDialog表达式

我知道这个话题在网络上被问了数万亿次,但是没有一个地方能回答

在我的应用程序中,我有一个欢迎屏幕。当我端到端运行程序时,一切都正常-打开/关闭活动并显示各种对话框。
但是,当我到达欢迎屏幕并按下后退按钮时,一切都变得一团糟:
1) 我要显示的对话框导致BadTokenException(我使用的是
this
,而不是
getApplicationContext()

2) 我尝试使用try/catch捕获异常,但它确实通过了
showDialog
行。但是,在第二节。运行,当到达
showDialog
表达式时,它抛出
IllegalStateException:View.com.android.internal.policy.impl.PhoneWindow$DecorView@44a59830已添加到窗口管理器中

此外,我知道按HOME键会导致活动暂停,而按BACK键会导致onDestroy,但出了什么问题

我试图在一周多的时间内解决这个问题,但没有成功。
有什么想法吗?

我没给你们完整的答案,但我想当你们按下后退按钮时,你们需要做一些事情。所以,您可以覆盖欢迎屏幕活动或任何其他活动中的返回按钮,并在其中添加代码

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // add you code here
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

我唯一能想到的替换“在此处添加代码”的方法是调用finish()。问题是-finish()导致与BACK按钮完全相同的行为:(finish()导致与BACK按钮完全相同的行为!???当您的活动完成并且应该关闭时调用finish()(调用onDestroy)。如果BACK按钮操作可以覆盖并按照您的意愿执行,我的意思不是这个“导致与后退按钮完全相同的行为”。我的意思是,如果我尝试在主屏幕中调用finish,我会抛出相同的错误和异常。我可以在后退按钮中写入什么内容?-从主活动中按后退返回主屏幕,这是正常的-但会在途中造成问题。