getExtras(name).getString和getIntent()之间的区别.getStringExtra(name)

Dan*_*vak 7 android bundle nullpointerexception android-intent oncreate

我的Android应用程序上有一些错误报告,它是一个活动中onCreate()的Nullpointerexception. 失败的代码是getIntent().getExtras().getStringExtra("name").(空指针异常)

这意味着getExtras()以某种方式为null.我确信我在创建意图的每个地方都设置了额外的意图.我无法在设备上的模拟器上重新创建它.在我尝试再次打开应用程序之后,我认为它发生在我的真实设备上(但不是在我调试时),同时Android可能会杀死进程并再次重新创建活动.但是,即使在这种情况下,也不应该保留额外的意图吗?

我试图在模拟器上终止进程,再次调用onCreate并且getExtras()返回正确的值.

我用getIntent().getStringExtra()替换了代码.除了它之外还有什么区别不会抛出nullpointerexception,但仍会将String设置为null.还有其他区别吗?

可能是什么原因造成的?

hac*_*bod 8

如果没有额外的内容,Intent.getStringExtra()将返回null.如果没有额外的内容,Intent.getExtras()将返回null,因此您需要在尝试调用getString()或其他方法之前检查它.


Dan*_*vak 0

我发现在代码的其他地方我正在创建带有 String[] 额外的快捷方式意图。Android HOME(也许还有系统的其他部分)不保留字符串数组,只保留原始附加值(int、string、long、float...)。但是引起问题的代码不使用快捷方式,它只是一个接收额外字符串数组的简单活动。也许空的额外内容也是由这个问题引起的 - 应用程序被操作系统杀死并且无法存储额外内容。在这种情况下,Android 不会抛出异常。

罗曼盖伊在这里描述: http://groups.google.com/group/android-developers/browse_thread/thread/7f2ce458bd5d112f/189e2b7b2b2532d7

我在这里问了一个更具体的问题: 重启后快捷方式意图额外丢失?