我试过了,应该就是Thead处理问题出错,但哪里出错不知道了,eclipse报错信息是: can't create handler inside thread that has not call Looper.prepar()以下是代码(绝对不难的):
package com.kit;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class MyHandler extends Activity {
Button btn;
TextView display;
int count = 0;//用以存放1~10的总和
protected final int singal = 0X123;//用以存放Message对象的what成员变量@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myhandler);
// 使用一个线程是实现1~10的相加,然后把得数利用handler放入到textview中
btn = (Button) findViewById(R.id.testBtn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyHandler.this, "runnable testing.", 4000)
.show();
//已经试过,出错的就是线程,但不知道是具体哪里有问题
new Thread(new Runnable() {
@Override
public void run() {
Toast.makeText(MyHandler.this, "runnable testing.",
4000).show();
try {
int i;
for (i = 1; i <= 10; i++) {
count = count + i;
}
Message m = new Message();
m.what = MyHandler.this.singal;
// 利用handler对象将信号发送给handler处理
MyHandler.this.myhandler.sendMessage(m);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
Handler myhandler = new Handler() {
// 该方法是用来接收sengMessage()发送过来的对象的
public void handlerMessage(Message msg) {
Toast.makeText(MyHandler.this, "is testing.", 4000).show();
if (msg.what == MyHandler.this.singal) {
display = (TextView) findViewById(R.id.display);
display.setText(count);
Thread.currentThread().interrupt();
} else {
Toast.makeText(MyHandler.this, "you click the testBtn.", 2000)
.show();
Thread.currentThread().interrupt();
}
}
};
}
package com.kit;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
public class MyHandler extends Activity {
Button btn;
TextView display;
int count = 0;//用以存放1~10的总和
protected final int singal = 0X123;//用以存放Message对象的what成员变量@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myhandler);
// 使用一个线程是实现1~10的相加,然后把得数利用handler放入到textview中
btn = (Button) findViewById(R.id.testBtn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyHandler.this, "runnable testing.", 4000)
.show();
//已经试过,出错的就是线程,但不知道是具体哪里有问题
new Thread(new Runnable() {
@Override
public void run() {
Toast.makeText(MyHandler.this, "runnable testing.",
4000).show();
try {
int i;
for (i = 1; i <= 10; i++) {
count = count + i;
}
Message m = new Message();
m.what = MyHandler.this.singal;
// 利用handler对象将信号发送给handler处理
MyHandler.this.myhandler.sendMessage(m);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
Handler myhandler = new Handler() {
// 该方法是用来接收sengMessage()发送过来的对象的
public void handlerMessage(Message msg) {
Toast.makeText(MyHandler.this, "is testing.", 4000).show();
if (msg.what == MyHandler.this.singal) {
display = (TextView) findViewById(R.id.display);
display.setText(count);
Thread.currentThread().interrupt();
} else {
Toast.makeText(MyHandler.this, "you click the testBtn.", 2000)
.show();
Thread.currentThread().interrupt();
}
}
};
}
public void run(){}
Looper.loop();就OK了