#android #user-interface #window
#Android #пользовательский интерфейс #окно
Вопрос:
В моем приложении я использую вкладки, и в нем есть вкладки «Настройки», «Главная страница» и т.д. На странице настроек есть textview с некоторым текстом. На домашней странице есть асинхронная задача, которая выполняется в фоновом режиме.
Теперь я хочу, когда пользователь просматривает страницу настроек, и если асинхронная задача выполняется из дома.класс Java завершает метод doInBackground, я хочу обновить textview на странице настроек.
Как я могу получить ссылку на textview страницы настроек в методе onPostExecute асинхронной задачи в home.class ? Пожалуйста, дайте несколько подсказок или способов реализовать это..
Спасибо..
Ответ №1:
Вы не должны пытаться получить доступ к TextView напрямую из метода onPostExecute () вашей AsyncTask. Вместо этого временно сохраните значение, которое вы хотите установить для TextView где-нибудь централизованно, и извлекайте его оттуда при обращении к странице настроек.
Для сохранения значения вы можете использовать другой механизм. Если вам не нужно сохранять его, вы можете использовать одноэлементный класс, к которому можно получить доступ прямо из вашего приложения. Чтобы сохранить значение, вы должны использовать общие настройки, файл или базу данных.
Проверьте эту страницу для получения дополнительной информации.
Комментарии:
1. я хочу, чтобы textview обновлялся динамически (после завершения doInBackground), когда пользователь находится на самой странице настроек..
2. я могу поместить поток в settings.class обновлять поле для каждого определенного времени. но я не хотел такого.. Я хочу получить доступ к textview из другого класса (home.java ) возможно ли это? Что-то вроде getCurrentFocus и т.д..
3. @manidhar mulaparthi: «Я хочу получить доступ к textview из другого класса (home.java ) возможно ли это?» — это не очень хорошая идея. Пожалуйста, следуйте рекомендациям, предоставленным @Flo.
4. спасибо, но я уже использую базу данных для хранения этого значения и отображения textview путем извлечения этого. Если я повторно захожу на страницу настроек, она обновляется. Но то, что я хочу, — это динамическое свойство. Я не хочу, чтобы пользователь повторно заходил на страницу настроек, чтобы получить обновленный textview..
5. Внедрите какой-нибудь шаблон наблюдателя , который информирует ваши настройки об активности, когда значение было обновлено. Итак, вам нужен компонент (например, одноэлементный класс), который используется для обновления значения в базе данных, а затем уведомляет зарегистрированного в нем слушателя об обновлении. Ваша активность в настройках была бы таким слушателем. Таким образом, ваша активность в настройках получает информацию о новом значении и может извлекать его и обновлять пользовательский интерфейс. Поскольку имеет смысл уведомлять только о том, когда ваша активность видна, ее следует зарегистрировать в onResume () и отменить регистрацию в onPause ().