【问题标题】:Simple Problem With Intent ExtrasIntent Extras 的简单问题
【发布时间】:2010-12-21 20:38:31
【问题描述】:

发布时间: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);

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

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

感谢阅读, 托尼

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    这是 PendingIntents 的一个已知问题;当 Android 比较 PendingIntents 时,它不会比较 Intent extras,因此您不能多次安排相同的基本 Intent 只使用不同的 extras。目前,您只能通过其他方式使 Intent 独一无二,例如向 Intent 数据添加额外信息来解决此问题。

    Google Android Group 上有一些关于此的讨论:http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136

    【讨论】:

    • 啊,有道理感谢您的澄清!我已经尝试使用 setData() 方法(只是一个普通的旧 http url 到谷歌用于测试目的)来设置小部件 ID,但现在永远不会调用 onReceive() 方法。我将不得不继续修改它,但感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多