вызовите setListAdapter () из потока - PullRequest
2 голосов
/ 15 июня 2010

У меня проблема с моим ListActivity, я использую поток, чтобы показать ProgressDialog, где можно получить список всех установленных приложений. Я превращаю его в адаптер списка и затем хочу установить список действий, но я не могу этого сделать из потока.

Я получаю следующую ошибку: ERROR/AndroidRuntime(14429): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Loading...");
progressDialog.show();
new Thread() {
        public void run() {
              showList(); // the method where i get all the apps and have the setListAdapter(); method
              progressDialog.dismiss();
        }
}.start();

Как мне получить его, чтобы я мог использовать setListAdapter из моего потока

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Я решил, что с помощью обработчика мне удалось вывести setListAdapter из потока и все еще ждать, пока поток выполнит метод.

2 голосов
/ 15 июня 2010

Самый простой способ сделать это - использовать метод действия runOnUiThread:

runOnUiThread(new Runnable() {
    public void run() {
        showList();
        progressDialog.dismiss();
    }
});

Редактировать : изменен поток на Runnable

...