发布时间: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。
任何人都知道如何解决这个问题?希望我没有把它说得太糟糕。
感谢阅读, 贝
答案 0 :(得分:1)
这是PendingIntents的一个已知问题;当Android比较PendingIntents时,它不会比较Intent附加功能,因此您不能多次使用不同的附加功能安排相同的基本Intent。现在,你只能通过使Intent以额外的方式以某种方式唯一来解决这个问题,比如在Intent数据中添加额外的信息。
Google Android小组对此进行了一些讨论:http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136