リストビューのアイテムがダウンロードされるため、リストビューが表示される前に進行状況ダイアログを実行しようとしています。
これは、displayListView(); を使用してスレッドでリストビューを変更しようとしているためです。
02-08 00:25:48.959: W/System.err(3244): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
displayListView() をスレッドの外に置くと、nullpointerexption が発生します。displayListView() は、ダウンロードされたfieldsList arraylist を使用します。myThread.isAlive の間、待機しようとしましたが、このように進行状況ダイアログは表示されません。修正方法は?
私のコード:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.build_main);
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setMessage("Loading...");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
dialog.setMax(100);
dialog.show();
Thread myThread = new Thread(new Runnable() {
public void run() {
Builder builder = new Builder(server, user, password, BuildFieldsViewActivity.this, USER_AGENT);
Document doc = null;
doc = builder.DownloadPage("d.php?ne="+gyv_id);
fieldsList = builder.getKaimas(doc);
displayListView();
dialog.setProgress(100);
dialog.dismiss();
}
});
myThread.start();
}