AlertDialogを継承したクラスを作成しました。このクラスは、インターネット経由で値をチェックするスレッドを開始します (長い操作時間)。ダイアログには単一のボタン (POSITIVE_BUTTON) があります。このボタンは、スレッドが終了するまで無効にする必要があります。しかし、スレッドからこのボタンを有効にする方法がわかりません。
私のコード:
public MyDialog(Context context) {
super(context);
View view = getLayoutInflater().inflate(R.layout.dialog, null);
setView(view);
getButton(BUTTON_POSITIVE).setEnabled(false);
new Thread(new Runnable() {
public void run() {
// Long operation time code
getButton(BUTTON_POSITIVE).setEnabled(true); // CRASH!!!
}
}).start();
}
エラーは、別のスレッドからビューを変更したことを示しています。そしてrunOnUIThread
、AlertDialogに存在しないため、メソッドを使用できません。私は何をすべきか?