在我的活动中,我最初使用处理程序来使用从互联网接收的数据更新UI。我现在想要在alertdialog而不是UI屏幕上显示这些数据。该程序通过按下按钮,获取信息并在屏幕上显示。这是通过为处理程序调用必要的消息来完成的。我设法做了一个Toast消息,我认为alertdialog会遵循相同的逻辑,但我得到错误:
RunTime Error: Unable to add Window -- token null is not for an application
这是我的处理程序消息的代码,其中显然导致了错误(第84行是.show()方法行):
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
Context context = getApplicationContext();
switch( msg.what )
{
case DISPLAY_TOAST:
Toast t = Toast.makeText( context,"Toast Test",Toast.LENGTH_SHORT );
t.show();
break;
case UPDATE_UI:
htmlData.setText( feedback );
break;
case DISPLAY_ALERT_DIALOG:
passTime = new AlertDialog.Builder( context );
passTime.setTitle( alertDialogTitleStrg );
passTime.setMessage( alertDialogMsgStrg );
passTime.show();
break;
}
}
};
答案 0 :(得分:1)
您无法使用应用程序上下文显示AlertDialog
,您必须获取对您的活动上下文的引用,并在AlertDialog
构造函数中使用它。
答案 1 :(得分:1)
您的上下文对象是错误的,您可以采取的最简单方法如下:
passTime = new AlertDialog.Builder( YourActivity.this );
问候