首页 > 解决方案 > 为什么我的 Android 主屏幕应用小部件无法正常工作?

问题描述

我正在为聊天应用程序开发主屏幕小部件。我创建了一个Widget Provider和一个WidgetConfigurationActivity。When I create an Home widget the configuration show all the available chat for the logged user and when one is selected the widget should appear as an image of the other chat user. A PendingIntent然后应该打开正确的ChatActivity。为此,我需要 3 个可以从Firebase 数据库中恢复的字符串值:

这是我的 GitHub 存储库

我将 1 个字符串保存为SharedPref,将 2个字符串保存为Paper Library

当我创建第一个小部件时,一切正常。

我检索所有字符串,创建正确的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

我还检查了 WidgetConfigurationActivity 中的mAppWidgedId值,以确保使用新小部件创建了新 Id。

然后,如果我关闭或重新启动我的设备,第一个小部件停止工作……而第二个工作正常

有人可以帮助我了解我的代码中有什么问题以及如何解决它?非常感谢。欢迎任何建议。

标签: javaandroidfirebaseandroid-appwidget

解决方案


而不是 setOnClickPendingIntent,您必须在提供程序中使用 views.setPendingIntentTemplate(...),然后为小部件中的每个项目具有唯一的 onclick 行为,然后您必须为适配器中的每个项目设置一个 fillInIntent您填充每个项目的位置。

这是来自 Google Developers 的链接:https ://developer.android.com/guide/topics/appwidgets

如果您还有其他问题,请随时问我:)

最好的问候,拉斯洛


推荐阅读