我一直在做一些 Android Widgets 教程,同时学习 Kotlin。 我已经成功设置了一个带有按钮的小部件和该按钮的通知,该按钮执行一些代码,然后更新小部件。
当尝试添加第二个小部件并尝试添加另一个意图通知时,我看到第一个按钮现在更新了第二个小部件。就好像我在第二个按钮中设置的通知会更新并覆盖第一个通知。
我正在使用标准
PendingIntent.getBroadcast(
[..]_UPDATE or _IMMUTABLE)
功能,每次都会创建一个新意图,用于设置通知触发。
我还没有机会测试,我应该从代码中删除 IMMUTABLE
标志吗?
我明天可以提供一些代码。
编辑:一些代码,如承诺的那样:
val intent = Intent(context, Counter::class.java).also {
it.setAction(MY_ACTION)
it.putExtra("appWidgetId", appWidgetId)
}
// Get the layout for the widget and attach an onClick listener to
// the button.
views.apply {
setOnClickPendingIntent(
R.id.button, PendingIntent.getBroadcast(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
)
}
PendingIntent.getBroadcast(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
看到了吗
0
?对于应用程序小部件中的每个按钮来说,这需要是一个不同的值 RemoteViews
。