Android 通过Intent跳转传值失效

问题:

  我们使用 intent 在两个 activity 之间带值跳转的时候,有时候会遇到,接收值的那个 activity
收不到 intent 里的数据。

解决方法说明:

  检查自己接收值的那个activity,看一下启动模式,如果是 singleTask 或 singleInstance,可能和我遇到了一样的情况,接着往下看应该就能解决,如果不是,请 Ctrl+w,另行 google。。

解决方法:

  当启动模式为 singleTask 时,activity 通过 intent 传递数据的时候,如果 activity 未启动,那么在这个刚启动的 activity 里通过 getIntent() 会获取到这个 intent 的数据。如果要启动的 activity 是已经存在的,这时候通过 getInten() 方法获取到的 intent 是已启动的 activity 的原始 intent,也就是说 intent 的数据没有更新,这样在已启动的 activity 里拿到的 intent 的数据是旧数据。
  如果要每次获取 intent 传来的新数据就需要在 onNewIntent(Intent intent) 方法里调用setIntent(intent)设置这个传来的最新的 intent。
  即在启动模式为 singleTask 的 activity 里加上以下代码,然后通过 getIntent() 就可以获取到新传递过来的值了。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}



 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值