Android Studio中Activity传值问题:第二个参数无法获取
解决Activity间putExtra传值第二个值为null的问题
以下是几个直接的排查和解决方向:
确认Intent对象的一致性
检查跳转前的代码,是否在调用putExtra("Code", Code)后,又重新创建了Intent实例,导致第二个putExtra没有加到最终启动的Intent上。比如错误写法:Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("Code", Code); // 错误:重新实例化Intent,之前的参数被覆盖 intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("user", "1"); startActivity(intent);要保证是同一个Intent对象连续调用
putExtra。检查键名的大小写
Android的Intent键名是大小写敏感的,确认传递时的"user"和接收时的"user"拼写完全一致,没有大小写错误(比如传递时写"User",接收时写"user")。排查Activity启动模式的影响
如果目标Activity设置了singleTask或singleInstance启动模式,系统会复用已存在的Activity实例,此时getIntent()拿到的是第一次启动时的Intent,后续传递的新参数不会自动更新。这种情况需要在目标Activity中重写onNewIntent方法更新Intent:@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); // 更新为最新的Intent userIntent = getIntent().getStringExtra("user"); }验证传值的正确性
确认传递"user"时,传入的确实是字符串"1",有没有误写为变量(比如intent.putExtra("user", user),而user变量本身为null)。打印日志直观排查
在传递Intent前打印所有参数,接收时也打印Intent的参数集合,确认"user"键是否存在:
传递前日志代码:Log.d("IntentCheck", "传递的参数:" + intent.getExtras());接收时日志代码:
Log.d("IntentCheck", "接收的参数:" + getIntent().getExtras());
内容的提问来源于stack exchange,提问作者Beta tester
相关产品推荐
相关产品推荐

