Android 意图附加的简单问题

Android 意图附加的简单问题,android,android-intent,Android,Android Intent,发布时间:2009年11月30日星期一下午5:08发布主题:意图附加的简单问题 你好, 我正在为主屏幕开发一个应用程序小部件。我正试图做到这一点,当用户点击小部件时,它会更改小部件中显示的数据。但是,我也允许使用不同的数据打开多个小部件实例。因此,为了告诉我的方法要更新哪个小部件,我在启动的意图中添加了一个额外的内容来更改数据 以下是我的意图: 爪哇: 这将正确地存储小部件id,但是当调用change data方法时,从intent读取的小部件id是第一个小部件实例。也就是说,有一个for循环生

发布时间:2009年11月30日星期一下午5:08发布主题:意图附加的简单问题 你好,

我正在为主屏幕开发一个应用程序小部件。我正试图做到这一点,当用户点击小部件时,它会更改小部件中显示的数据。但是,我也允许使用不同的数据打开多个小部件实例。因此,为了告诉我的方法要更新哪个小部件,我在启动的意图中添加了一个额外的内容来更改数据

以下是我的意图: 爪哇:

这将正确地存储小部件id,但是当调用change data方法时,从intent读取的小部件id是第一个小部件实例。也就是说,有一个for循环生成所有小部件,无论点击哪个小部件,收到的小部件id始终是第一个小部件中的第一个小部件id

有人知道如何解决这个问题吗?希望我没有说得太差

谢谢你的阅读,
托尼

这是一个已知的悬而未决的问题;当Android比较PendingEvents时,它不会比较意向附加项,因此您不能只使用不同的附加项多次计划相同的基本意向。现在,您只能通过以某种方式(而不是额外方式)使意图唯一来解决这个问题,例如向意图数据添加额外信息


谷歌安卓小组对此进行了一些讨论:

啊,这很有道理,谢谢你的澄清!我曾尝试使用setData()方法(为了测试目的,只使用一个指向google的普通http url)来设置小部件ID,但现在从未调用onReceive()方法。我将不得不继续修补它,但感谢您的回复!
Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA"); 
changeData.putExtra("widget_id", currentWidgetId); 
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0); 
//This will return the correct value, but if I call it in my onreceive() method it won't.
Log.v(TAG, "stored id is: " + changeData.getIntExtra("widget", 0);