从Handler启动AlertDialog

时间:2012-03-27 19:24:48

标签: android

在我的活动中,我最初使用处理程序来使用从互联网接收的数据更新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;
        }

    }
}; 

2 个答案:

答案 0 :(得分:1)

您无法使用应用程序上下文显示AlertDialog,您必须获取对您的活动上下文的引用,并在AlertDialog构造函数中使用它。

答案 1 :(得分:1)

您的上下文对象是错误的,您可以采取的最简单方法如下:

passTime = new AlertDialog.Builder( YourActivity.this );

问候