0

以下是我的代码:基本上我正在调用进度类以从按钮侦听器运行它,我收到此错误

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();

    }

}
4

2 回答 2

0

您正在尝试从后台线程修改 UI,您不能这样做,而是使用Handleror AsyncTask(用于 UI 修改部分)。

于 2012-04-08T19:37:01.497 回答
0

问题是您正试图从非 UI 线程更改 UI。解决方案是使用 aHandler和其中一种post()方法,或者如果您可以调用Activitys runOnUiThread()-方法

于 2012-04-08T19:37:35.860 回答