Я работаю над виджетом домашнего экрана для приложения чата. Я создал Провайдер виджетов и WidgetConfigurationActivity. Когда я создаю виджет Home, в конфигурации отображается весь доступный чат для зарегистрированного пользователя, и когда один из них выбран, виджет должен отображаться как изображение другого пользователя чата. Затем PendingIntent должен открыть правильный ChatActivity. Для этого мне нужны 3 строковых значения, которые я могу восстановить из своего База данных Firebase:
Я сохраняю 1 строку как SharedPref и 2 как Бумажная библиотека.
Когда я создаю первый виджет, все работает нормально.
Я извлекаю все строки, создаю правильный RemoteView и собираюсь открыть правильный чат с правильными данными.
Проблема возникает, когда я создаю второй виджет.
Изображение второго виджета правильное, но когда я нажимаю на него, открывается ChatActivity для первого виджета.
Я вошел в систему, чтобы убедиться, что все данные получены правильно
08-14 04:37:07.899 27778-27778/com.example.alessandro.mychatapp D/Constraints: onUpdate: appWidgetId: 331, listUserId: kcL4c30lnjhU36TBqhgJQox4dVk1, userName: Dj Maru, userThumb: https://firebasestorage.googleapis.com/v0/b/mychatapp-8a476.appspot.com/o/profile_images%2Fthumbs%2FkcL4c30lnjhU36TBqhgJQox4dVk1.jpg?alt=media&token=9a748bfe-1f39-44fa-9c29-38d5e60aaa86
08-14 04:37:07.910 27778-27778/com.example.alessandro.mychatapp D/Constraints: updateAppWidget: appWidgetId: 331, user_id: kcL4c30lnjhU36TBqhgJQox4dVk1, userName: Dj Maru, image: https://firebasestorage.googleapis.com/v0/b/mychatapp-8a476.appspot.com/o/profile_images%2Fthumbs%2FkcL4c30lnjhU36TBqhgJQox4dVk1.jpg?alt=media&token=9a748bfe-1f39-44fa-9c29-38d5e60aaa86
08-14 04:37:07.917 27778-27778/com.example.alessandro.mychatapp D/Constraints: onUpdate: appWidgetId: 332, listUserId: 9saSiY1WT0PNt6derLMsGBcZvJh2, userName: redjack, userThumb: https://firebasestorage.googleapis.com/v0/b/mychatapp-8a476.appspot.com/o/profile_images%2Fthumbs%2F9saSiY1WT0PNt6derLMsGBcZvJh2.jpg?alt=media&token=28d1b36c-6c43-454e-9ecd-cafca9cee994
08-14 04:37:07.920 27778-27778/com.example.alessandro.mychatapp D/Constraints: updateAppWidget: appWidgetId: 332, user_id: 9saSiY1WT0PNt6derLMsGBcZvJh2, userName: redjack, image: https://firebasestorage.googleapis.com/v0/b/mychatapp-8a476.appspot.com/o/profile_images%2Fthumbs%2F9saSiY1WT0PNt6derLMsGBcZvJh2.jpg?alt=media&token=28d1b36c-6c43-454e-9ecd-cafca9cee994
Я также проверил значения mAppWidgedId в WidgetConfigurationActivity, чтобы убедиться, что новый идентификатор был создан с новым виджетом.
Затем если я выключу или перезапущу свое устройство, первый виджет перестает работать… а второй работает нормально.
Кто-нибудь может помочь мне понять, что не так в моем коде и как это исправить? Большое спасибо. Любые предложения приветствуются.




Вместо setOnClickPendingIntent вы должны использовать views.setPendingIntentTemplate (...) в провайдере, а затем иметь уникальное поведение onclick для каждого из ваших элементов в виджете, тогда вам нужно установить fillInIntent для каждого элемента в адаптере где вы заполняете каждый элемент.
Вот ссылка от разработчиков Google: https://developer.android.com/guide/topics/appwidgets
Если у вас есть другие вопросы, пожалуйста, задавайте их :)
С уважением, Ласло