Activity中getIntent为什么获取不到值?

Activity有四种启动模式,一般为默认。

当Activity的启动模式为singleTask的时候,通过Intent传值,getIntent是接收不到值的,为null。

因为不同的启动模式,走的方法也不一样。当页面再次被调用的时候,先走onNewIntent方法再走onRestart。

所以需要重写onNewIntent方法,而且此方法在Activity Finish之后是不执行的。


    //finish之后是不执行的
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);//设置新的intent
        
        String data = getIntent().getStringExtra("data");
        ...
    }



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你在Android的Activity设置了intent-filter和action,并且通过`getAction()`方法获取不到Action,可能是由于以下原因导致的: 1. 确保在设置intent-filter时,正确地指定了Action。例如,如果你的intent-filter指定了`android.intent.action.MAIN`作为Action,则应该使用`Intent.ACTION_MAIN`进行匹配。 2. 确保在获取Intent对象后,立即调用`getAction()`方法。如果在其他方法(如`onCreate()`之外的方法)调用此方法,可能会导致获取不到Action。 3. 如果你在启动Activity时没有设置Action,那么通过`getAction()`方法是无法获取到Action的。你可以尝试通过`hasExtra()`方法来检查Intent是否包含指定的Action。 以下是一个示例代码,展示了如何设置intent-filter和Action,并获取Intent的Action: 在AndroidManifest.xmlActivity节点下添加intent-filter: ```xml <activity android:name=".YourActivity"> <intent-filter> <action android:name="com.example.ACTION_CUSTOM" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> ``` 在Activity获取Intent的Action: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = getIntent(); String action = intent.getAction(); if (action != null && action.equals("com.example.ACTION_CUSTOM")) { // 获取到自定义Action } else { // 未获取到自定义Action } } ``` 确保你在获取Intent的Action时,使用正确的Action常量或自定义的Action字符串。如果问题仍然存在,请检查你的代码逻辑和配置,确保一切设置正确。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值