Android应用程序第二次单击该按钮时崩溃

时间:2013-07-15 18:36:44

标签: android rss

我创建了一个简单的应用程序,用于显示美国国家航空航天局其rss Feed中当天的图像。现在我创建了一个刷新按钮,显示进度对话框,然后刷新页面。第一次点击时它可以正常工作,但下次点击它时应用会停止。

单击按钮时调用方法refreshform。这个线程创建(在onCreate方法中,并且首先命名)....

private void refreshForm()     {

     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();

                }
            }

                    );

        }
    }

}

1 个答案:

答案 0 :(得分:0)

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

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

你无法在无UI线程上添加Toast

你可以使用Handler来做到这一点