首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法检索意图的附加内容

无法检索意图的附加内容
EN

Stack Overflow用户
提问于 2011-02-04 21:04:49
回答 6查看 5.9K关注 0票数 5

我有一个在多模式下使用的活动,所以我必须这样做:

代码语言:javascript
复制
    Intent i = new Intent(MainListActivity.this,MainActivity.class);
    extras.putInt("id", c.getId());
    extras.putInt("mode", AREA_MODE);
    i.putExtra("extras", extras);
    startActivity(i);

onCreate

代码语言:javascript
复制
    Intent i = this.getIntent();
    extras = i.getBundleExtra("extras");
    if(extras!=null){
        id = extras.getInt("id", -1);
        mode = extras.getInt("mode", COUNTRY_MODE);
    }

但是意图附加总是为空的。我是不是遗漏了什么?有没有办法做到这一点?

编辑:由于某些原因,getIntent()方法返回前一个Intent,在我的例子中,它没有额外的(主意图)。我在努力找出原因。

EN

Stack Overflow用户

发布于 2015-04-10 15:29:43

啊哈!我刚刚调试了这个问题。事实证明,这是由于一个微妙的细节。

  • PendingIntent是对系统维护令牌的引用。因此,即使发送过程重新启动,重建类似的意图也会检索到原始的PendingIntent。然后发送者可以取消或更改它。
  • Similar intent ==相同的操作、操作、数据、类别、组件和标志。额外值不算数!仅在额外值上不同的
  • 意图都检索相同的标记。

人们常犯的一个错误是创建多个PendingIntent对象,这些对象的意图只是在它们的“额外”内容上有所不同,期望每次都能得到不同的PendingIntent。这种情况不会发生。

解决方案1:创建一个不同的PendingIntent。它必须有不同的操作、动作、数据、类别、组件或标志--或者请求代码整数。

解决方法2:使用FLAG_CANCEL_CURRENTFLAG_UPDATE_CURRENT取消或修改任何现有的PendingIntent。

这两个修复产生的结果略有不同。无论哪种方式,你的新附加软件都应该可以通过。

票数 3
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4898271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档