我创建了一个简单的应用程序,用于显示美国国家航空航天局其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();
}
}
);
}
}
}
答案 0 :(得分:0)
通过你的logcat很好 但我想你的问题是第二个线程上的代码
Toast.makeText(Start.this, "Wallpaper Set", Toast.LENGTH_SHORT).show();
你无法在无UI线程上添加Toast
你可以使用Handler来做到这一点