Top.Mail.Ru
Ответы

Andoid Studio Kotlin передача данных в виджет

Добрый день. Помогите пожалуйста разобраться. Только начал изучать Котлин в Andoid Studio. Пытаюсь создать простенькое приложение. Цель следующая: виджет должен до 12:00 показывать имя первого человека, после 12:00 имя второго человека. Имена задаются в основном приложении пользователем. Никак не пойму, как передать из MainActivity переменную типа String в NewAppWidget. Не работает не Intent, который я обычно использовал для связи двух активностей, ни SharedPreferenses. Я так понимаю, что проблема в том, что виджет работает в другом процессе Android. Спасибо за помощь.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Просветленный
1мес

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

Интент нужен для запуска компонентов или системных сообщений, а не для прямой передачи данных по желанию из активности в висящий виджет.
SharedPreferences не работают? Вот это поворот. Самое простое хранилище ключ-значение сломалось? Может, забыли сохранить изменения через apply или commit? Или имя файла преференсов перепутали? Или режим доступа не тот выбрали, если уж так хочется про разные процессы поговорить? Хотя для строк это обычно работает и без фокусов.

Проблема не в том, что виджет в другом процессе. Проблема в том, как пытаются данные туда запихнуть. Активность должна СОХРАНИТЬ данные (например, в SharedPreferences), а потом ДАТЬ КОМАНДУ виджету обновиться. Виджет при обновлении сам прочитает сохраненные данные. Никаких прямых передач переменных из активности в виджет по щелчку пальцев.

Логика с 12:00 вообще должна быть внутри виджета, в его методе onUpdate. Он проверяет время, читает НУЖНОЕ имя из SharedPreferences и отображает.