Android:应用程序崩溃BadTokenException错误(尝试显示AlertDialog)

时间:2013-01-30 12:30:50

标签: java android exception alertdialog

如果没有连接,我只想在屏幕上打印警报。

以下是我在课堂上所做的扩展活动的内容。

if(isOnline()) { 
    // do stuff..
} else {
    Builder builder =  new AlertDialog.Builder(getApplicationContext());
    builder.setMessage("No connection.");
    builder.setCancelable(true);
    AlertDialog dialog = builder.create();
    dialog.show();
}

然后我尝试使用Debug启动它,并收到以下错误:

  

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序

4 个答案:

答案 0 :(得分:4)

使用

 Builder builder =  new AlertDialog.Builder(Your_Current_Activity.this);

而不是

 Builder builder =  new AlertDialog.Builder(getApplicationContext());

因为您需要传递当前活动上下文以显示AlertDialog而不是应用程序上下文

答案 1 :(得分:3)

替换

Builder builder =  new AlertDialog.Builder(getApplicationContext());

Builder builder =  new AlertDialog.Builder(YourActivityName.this);

由于您可能需要活动上下文而非应用程序上下文

希望它有所帮助。

答案 2 :(得分:1)

使用yourActivityName.this代替getApplicationContext();

答案 3 :(得分:1)

尝试使用除classname.this以外的getApplicationContext()这段时间导致问题

if(isOnline()) { 
    // do stuff..
} else {
    Builder builder =  new AlertDialog.Builder(getApplicationContext());
    builder.setMessage("No connection.");
    builder.setCancelable(true);
    AlertDialog dialog = builder.create();
    dialog.show();
}