【发布时间】:2011-11-01 10:42:03
【问题描述】:
我有两个(或更多)小部件,例如A 和 B,它们应该启动相同的活动,将 appWidgetId 中的 Intent 附加信息传递给活动。在从任何小部件首次启动应用程序安装后,这工作正常(活动收到正确的appWidgetId)。如果我在活动启动后按下后退按钮并从不同的小部件启动活动,它也可以正常工作。但是,如果我从小部件 A 启动活动,点击主页按钮,然后从小部件 B(或 C 或 D ...)启动活动,它将使用 A 的appWidgetId 启动。我很困惑如何解决这个问题。这是我声明我的PendingIntent的方式:
Intent intent = new Intent(context, WidgetActivity.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setAction(this.getClass().getName() + System.currentTimeMillis());
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
如果我理解正确,我成功地为每个小部件设置了唯一的 PendingIntents。非常感谢任何帮助!
编辑: 接受this question 的答案表明:
我认为问题在于您的 PendingIntent 仅存在额外差异。 PendingIntents 是缓存的,所以如果你使用两个具有相同操作和数据的,它们会相互覆盖。
但是,我的代码创建了要执行的随机操作,因此我认为我的 PendingIntent 的不同之处不仅仅是额外的
【问题讨论】:
标签: android android-pendingintent