如题。我写的代码如下:
public class DialogActivity extends Activity{ @Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
new Thread(new TestThread(this)).start();
}
}
class TestThread implements Runnable{
public TestThread(DialogActivity da){
this.da = da;
}
@Override
public void run() {
int count = 0;
while(count++<10){
dialog();
}
}
protected void dialog() {
AlertDialog.Builder builder = new Builder(da);
builder.setMessage("确认退出吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
da.finish();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
private DialogActivity da = null;
}
public class DialogActivity extends Activity{ @Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
new Thread(new TestThread(this)).start();
}
}
class TestThread implements Runnable{
public TestThread(DialogActivity da){
this.da = da;
}
@Override
public void run() {
int count = 0;
while(count++<10){
dialog();
}
}
protected void dialog() {
AlertDialog.Builder builder = new Builder(da);
builder.setMessage("确认退出吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
da.finish();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
private DialogActivity da = null;
}
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(msg.what==SHOW_DIALOG)
{
//dialog();
Toast.makeText(DialogActivity.this, "333", Toast.LENGTH_LONG).show();
}
super.handleMessage(msg);
}
};
然后线程内用hmessage.sendEmptyMessage(SHOW_DIALOG);消息处理是在主线程的就不会报错了
那就是Dialog不在UI中创建不行,是吧?
非ui线程是不能操作ui的。一般通过handler发送消息给ui线程,然后在ui线程更新界面。
我试了下这样是可以的
Looper.prepare();
dialog();
Looper.myLooper().loop();
[/Quote好的,知道了。