Galaxy Nexus运行Android 4.1.1 JellyBean时,getIntent()。getExtras()返回null。

4

我正在使用Bug-Sense进行错误报告。在我的应用程序最新更新后,我一直收到null指针。

这个问题只发生在Android 4.1.1上。几乎每个活动中都有25个这些空指针的出现,而且只在Android 4.1.1上出现。

有人知道为什么会发生这种情况吗?

Intent i= new Intent(context, MyActivity.class);
i.putExtra("id", id);
context.startActivity(i);

获取额外信息:

Bundle extras = getIntent().getExtras();
String id = extras.getString("id"); //null pointer

Android 4.1.1 中的所有崩溃?是哪个设备? - Blackbelt
额外的设置是如何进行的? - Code-Apprentice
@blackbelt 大约80%的Galaxy Nesus和20%的"Crespo4G上的Android"。 - 124697
2个回答

0

我在使用 Android 4.1 的 singleTask 启动模式的 Activity 中遇到了同样的问题。如果在该 Activity 的实例已经启动之后再次启动它,就会出现这个问题。

看起来是因为 getIntent() 返回的是第一个 Intent 而不是当前的 Intent。 Android 文档 中写道:

getIntent():返回启动此 Activity 的 Intent。

我发现在 onCreate 方法中获取的是第一个 Intent(即 Activity 启动器),但在 onNewIntent 方法中获取的是带有额外信息的正确 Intent。因此,我重写了 onNewIntent 方法:

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

为了在onCreate中正确返回由getIntent返回的意图。

关于这个重写的讨论,你可以在这里找到:
在重写onNewIntent时不调用setIntent有什么原因吗?


0

即使与Android 4.1.1无关,看起来非常相似

Android getIntent().getExtras()返回null

您正在使用选项卡吗? 我认为您需要提供更多上下文和代码才能得到有效的答案。


谢谢。我没有使用制表符。代码在其他设备上运行良好,但在某些设备上不起作用。 - 124697

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接