0

我创建了一个简单的应用程序来显示来自 nasa RSS 提要的当天图像。现在我创建了一个刷新按钮,它将显示一个进度对话框,然后刷新页面。第一次单击时它工作正常,但下次单击时应用程序停止。

当按钮被点击时,方法 refreshform 被调用。这是创建的线程(在 onCreate 方法中并首先命名)....

私人无效刷新表单(){

     dialog = ProgressDialog.show(
            this,
            "Loading",
            "Loading the image of the Day");


                //resetDisplay(handler.getTitle(),handler.getDate(),handler.getImage(),handler.getDescription());




    th.start();
/*  IotdHandler handler = new IotdHandler();
    handler.processFeed();
    resetDisplay(handler.getTitle(),handler.getDate(),handler.getImage(),handler.getDescription());*/

}


public void run()
{                   
    if(Thread.currentThread().getName()=="first")
    {
    if(handler==null)
    {       
     handler = new IotdHandler();
    }
    handler.processFeed();

    handle.post(new Runnable()
    {
        public void run()
        {
            resetDisplay(handler.getTitle(),handler.getDate(),handler.getImage(),handler.getDescription());
            dialog.dismiss();

        }
    });
    }
    else if(Thread.currentThread().getName()=="second")
    {
        WallpaperManager wp= WallpaperManager.getInstance(this);
        try
        {
            wp.setBitmap(wallpaper);
            handle.post(new Runnable()
            {
                public void run()
                {
                    Toast.makeText(Start.this, "Wallpaper Set", Toast.LENGTH_SHORT).show();
                }
            }

                    );
        }
        catch(Exception e)
        {
            e.printStackTrace();
            handle.post(new Runnable()
            {
                public void run()
                {
                    Toast.makeText(Start.this, "Error Setting Wallpaper", Toast.LENGTH_SHORT).show();

                }
            }

                    );

        }
    }

}
4

1 回答 1

0

过去你的 logcat 很好,但我想你的问题是第二个线程上的这段代码

Toast.makeText(Start.this, "Wallpaper Set", Toast.LENGTH_SHORT).show();

你不能在没有 UI 线程上添加 Toast

你可以 Handler 来做到这一点

于 2013-07-15T19:09:59.577 回答