Android: как динамически обновлять пользовательский интерфейс? - PullRequest
3 голосов
/ 24 ноября 2011

У меня есть приложение для Android, и мне нужно динамически изменять пользовательский интерфейс:
Например: когда пользователь нажимает кнопку, я хочу изменить представления текущей деятельности и, поскольку в некоторых случаях используется много представлений, янужно отобразить ProgressDialog.

Я использовал AsyncTask, но я думаю, что это не лучшее решение, потому что AsyncTask 'doInBackground запускает другой поток, поэтому я не могу обновить пользовательский интерфейс оттуда -Я должен использовать runOnUiThread, который запускает код в потоке пользовательского интерфейса, но останавливает отображаемое диалоговое окно прогресса.

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

Так есть ли у кого-нибудь решение для этого?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

Вы можете использовать что-то вроде этого:

Создать обработчик:

 final Handler handler = new Handler();
        final Runnable updateResults = new Runnable() {
            public void run() {
                updateResultsInUi();
            }
        };  

и всякий раз, когда вы захотите обновить пользовательский интерфейс., Вы можете использовать его где угодно

handler.post(updateResults);

и в методе updateResultsInUi вы можете выполнять пользовательский интерфейс:

 private void updateResultsInUi() {
  // do stuff
 }

Надеюсь, это поможет

0 голосов
/ 24 ноября 2011

о, вы совершенно и совершенно не правы ... вы можете использовать асинхронную задачу для этой цели.и, на мой взгляд, это лучшая вещь в Blackberry и iPhone.но реализация немного сложнее, поэтому, пожалуйста, с этим.Посмотрите на это example1 и example2 .это поможет тебе.если вам по-прежнему нужна помощь в их реализации, обратитесь ко мне, и мы решим ее для вашего конкретного случая.

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