在Android Intent中的putExtra中传递null会导致编译时错误吗?

时间:2013-11-13 11:02:45

标签: java android

我正在尝试在代码中使用putExtra(String,String)来传递null。 正如参数所示,第二个参数可以是null,因为它是一个字符串,我可以发送它

this.getIntent().putExtra(AppConstant.TestString, null);

当我使用上面的代码时,它给出了错误说:

方法putExtra(String,String)对于Intent类型不明确

然而它允许我使用:

this.getIntent().putExtra(AppConstant.TestString, "");

请在此赐教。提前谢谢。

4 个答案:

答案 0 :(得分:16)

当您使用null时,编译器不知道您要使用哪种类型,并且无法确定要使用的方法的重载。

您可以将null转换为String以通知编译器您使用哪种方法:

this.getIntent().putExtra(AppConstant.TestString, (String)null);

或者,您可以创建变量并将其设置为null

String param = null;
this.getIntent().putExtra(AppConstant.TestString, param);

答案 1 :(得分:1)

问题是因为第二个参数为null,它无法分辨您要调用的方法:putExtra(String name, float value)putExtra (String name, byte[] value)putExtra (String name, long[] value)等...

答案 2 :(得分:0)

这可能是因为Android在您使用

时无法确定您传递的内容(Stringbooleanint

this.getIntent().putExtra(AppConstant.TestString, null);

但是当你使用

this.getIntent().putExtra(AppConstant.TestString, "");

它知道您将其作为String

传递

答案 3 :(得分:0)

请改用intent.removeExtra(extraName)。它清除了额外的内容,比在putExtra中使用类型转换更干净。

https://developer.android.com/reference/android/content/Intent.html