Android вызывается из неправильного ответа - PullRequest
1 голос
/ 04 марта 2012

Я видел много вопросов на эту тему, но я действительно не доволен ни одним ответом.

То, что я хочу, чтобы он имел class ConnectionController implements Runnable, который отвечает за открытие соединения с сервером, читать и писать в него сообщения и создавать его с начала приложения до конца.

У меня есть class MainActivity extends from Activity, который onCreate создает экземпляр объекта ConnectionController.

ЭтоconnectionController должен изменить некоторые поля в MainActivity (и, в конечном итоге, в других действиях), например, статус-коннекты ImageView или даже полученные сообщения TextView.

Поскольку connectionController является потоком, я не могу получить доступ к элементам (CalledFromWrongThreadException (толькооригинальный поток, создавший иерархию представлений, может касаться его представлений.)

Что вы рекомендуете использовать? Я видел решение с асинхронными задачами, обработчиками, myUIRunnable, но я не понял, какое решение лучше для этой ситуации.

Заранее спасибо.

1 Ответ

1 голос
/ 04 марта 2012

Этот connectionController должен изменить некоторые поля в MainActivity (и, в конечном итоге, в других действиях), например, изменения состояния ImageView или даже полученные сообщения TextView.

Нет, это не так. Нужно организовать для того, чтобы эти вещи были изменены. Поскольку по какой-то причине вы решили сделать «контроллер» потоком, контроллер не может сам изменять эти элементы пользовательского интерфейса.

Что вы рекомендуете использовать?

Используйте post() на View. Или используйте runOnUiThread() на Activity. Или используйте Handler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...