【发布时间】:2011-07-07 16:57:15
【问题描述】:
当我按下搜索按钮时,它会产生意外停止的问题。
public class beautiful extends Activity {
ImageView radar;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.beautiful);
radar = (ImageView) findViewById(R.id.radar);
Button search = (Button) findViewById(R.id.magnifier);
ImageView text = (ImageView) findViewById(R.id.text);
MediaPlayer siren = MediaPlayer.create(this, R.raw.siren);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Thread counter = new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try{
Thread.sleep(2000);
radar.setImageResource(R.drawable.radar_new_full);
Thread.sleep(3000);
radar.setImageResource(R.drawable.radar_new_50);
Thread.sleep(2000);
radar.setImageResource(R.drawable.radar_new_found);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
}
}
});
counter.start();
}
});
}
以下是 LogCat 警告:
07-07 17:36:17.298: WARN/dalvikvm(274): threadid=15: 线程以未捕获的异常退出 (group=0x4001b188) 07-07 17:36:17.306:错误/AndroidRuntime(274):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-07 17:36:17.306: 错误/AndroidRuntime(274): android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.ViewRoot.checkThread(ViewRoot.java:2683) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.ViewRoot.requestLayout(ViewRoot.java:557) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.View.requestLayout(View.java:7918) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.View.requestLayout(View.java:7918) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.View.requestLayout(View.java:7918) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.view.View.requestLayout(View.java:7918) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 android.widget.ImageView.setImageResource(ImageView.java:271) 07-07 17:36:17.306: 错误/AndroidRuntime(274): 在 example.beautiful$1$1.run(beautiful.java:46) 07-07 17:36:17.306: 错误/AndroidRuntime(274): at java.lang.Thread.run(Thread.java:1096)
【问题讨论】:
-
始终粘贴所有相关的 LogCat 输出以查找您需要帮助的任何错误。有些人可能能够通过观察您的代码来找出问题所在,但是阅读您的错误日志(它专门告诉您什么是错误的)要容易得多。这可以在 Eclipse 的“LogCat”视图中查看。
-
谢谢,看看 gopal 的回答。您正在从非 UI 线程调用 UI 方法 (setimageresource)。 “只有创建视图层次结构的原始线程才能接触其视图”
-
好的,谢谢。我读了。最大的问题是我对这个 AsyncTask 不太了解。只有下载图片的例子,我不需要。谢谢
标签: android