【发布时间】:2014-12-04 05:30:00
【问题描述】:
我有 3 个活动,我们将它们称为 A、B 和 C。A 和 B 都有将视图发送给 C 的意图。C 的活动上会设计一个 C 来自不同事物的设计。我将这样的数据从 A 传递到 C:
Intent intent = new Intent(this, C.class);
intent.putExtra("Action", "A");
startActivity(intent);
然后在 C 的 onCreate 方法中我有这样的东西:
Bundle extras = getIntent().getExtras();
if (extras.getString("Action").equals("A")) {
//DO SOMETHING
}
然后我从B到C我有
Intent intent = new Intent(this, C.class);
startActivity(intent);
然后我得到 NullPointerException,我猜这是因为从 B 到 C 时我没有指定字符串“Action”。
现在我可以在这种情况下为 B 添加一行,但是如果有更多活动或大型项目,这将不是很好,因为对于每个活动,我都需要这个。
如果不向活动 B 添加“Action”刺痛,我怎样才能拥有它,这样我就不会得到这个异常?
提前感谢您的帮助。
编辑
如果我从 A 到 C 有这个
Intent intent = new Intent(this, C.class);
intent.putExtra("Action", "A");
intent.putExtra("Action2", "A");
startActivity(intent);
这是从 B 到 C
Intent intent = new Intent(this, C.class);
intent.putExtra("Action", "B");
startActivity(intent);
然后在 C 的 onCreate 中,从 B 到 C 时失败:
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.getString("Action").equals("A")) {
//DO SOMETHING
}
else if (extras.getString("Action2").equals("A")) {
//DO Stuuf
}
}
【问题讨论】:
-
您来自 B 的意图没有额外内容,因此当您调用 extras.getString() 时,您会得到一个 NPE。如下所述,检查 @Remees M Syde 是否为 null。
标签: java android android-intent android-activity nullpointerexception