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を変更しようとしていますが、これを行うことはできません。代わりに、HandlerまたはAsyncTask(UI変更部分の場合)を使用してください。

于 2012-04-08T19:37:01.497 に答える
0

問題は、非 UI スレッドから UI を変更しようとしていることです。これに対する解決策は、Handlerといずれかのメソッドを使用するか、またはsメソッドpost()を呼び出すことができる場合です。ActivityrunOnUiThread()

于 2012-04-08T19:37:35.860 に答える