Intent Extras的简单问题

时间:2009-12-01 01:09:21

标签: android android-intent

发布时间:2009年11月30日星期一下午5:08发表主题:Intent Extras的简单问题 你好,

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

这是我的意图: 爪哇:

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);

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

任何人都知道如何解决这个问题?希望我没有把它说得太糟糕。

感谢阅读, 贝

1 个答案:

答案 0 :(得分:1)

这是PendingIntents的一个已知问题;当Android比较PendingIntents时,它不会比较Intent附加功能,因此您不能多次使用不同的附加功能安排相同的基本Intent。现在,你只能通过使Intent以额外的方式以某种方式唯一来解决这个问题,比如在Intent数据中添加额外的信息。

Google Android小组对此进行了一些讨论:http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136