以下是我的代码:基本上我调用进度类来从按钮监听器运行它并且我收到此错误
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
是从按钮或菜单运行此进度类的方法吗?
public class ProgressDialogeActivity extends Activity {
private ProgressDialog dialog;
int count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// running from main activity
dialog = new ProgressDialog(this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMessage("Deleteng Contacts ...");
dialog.setMax(50);
// dialog.show();
// dialog.setProgress(40);
Object Maxmssg = checkhowmanysms();
// dialog.setMax((Integer) Maxmssg);
Button deletesms = (Button) findViewById(R.id.button1);
deletesms.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
progress prog = new progress();
prog.start();
}
});
}
public class progress extends Thread {
@Override
public void run() {
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMessage("Deleteng Contacts ...");
int size = checkhowmanysms();
Object Maxmssg = checkhowmanysms();
dialog.setMax((Integer) Maxmssg);
dialog.show();
Uri inboxUri = Uri.parse("content://sms");
Cursor item = getContentResolver().query(inboxUri, null, null,
null, null);
while (item.moveToNext()) {
count++;
dialog.setProgress(count);
// Delete the SMS
String pid = item.getString(0); // Get id;
String uri = "content://sms";
getContentResolver().delete(Uri.parse(uri), null, null);
}
dialog.dismiss();
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
问题是您正在尝试从非UI线程更改UI。对此的解决方案是使用Handler
和其中一种post()
方法,或者如果您可以调用Activity
s runOnUiThread()
- 方法