​出错提示如下所示:请各位大侠帮忙看看!

出错提示:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
程序:public class ThreadActivity extends Activity {
/** Called when the activity is first created. */
private mThread thread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
thread = new mThread();
thread.start();
Toast.makeText(this, "Main",Toast.LENGTH_SHORT).show();
}
class mThread extends Thread
{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(ThreadActivity.this, "toast", Toast.LENGTH_SHORT).show();

}

}
}

一只甜甜圈
浏览 211回答 3
3回答

慕勒3428872

子线程中不能弹Toast,不能更新UI,你可以在子线程中使用Handler回调,在主线程中弹Toast,可以这样写:主线程在 onCreate方法之外:Handler mHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 1:Toast.makeText(ThreadActivity.this, "toast", Toast.LENGTH_SHORT).show();break;}super.handleMessage(msg);}};子线程:try {Thread.sleep(5000);Message msg = new Message();msg.what = 1;mHandler.sendMessage(msg);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}

largeQ

Toast.makeText(ThreadActivity.this, "toast", Toast.LENGTH_SHORT).show();他是要再主线程中被调用,也就是ThreadActivity.this所在的线程中调用。直接和context对应的。简介:编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程。为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。编程:设计具备逻辑流动作用的一种"可控体系"【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】

炎炎设计

请注意:Toast.makeText(ThreadActivity.this, "toast", Toast.LENGTH_SHORT).show();他是要再主线程中被调用,也就是ThreadActivity.this所在的线程中调用。直接和context对应的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java