有没有办法检查在启动活动时是否已经传递额外费用?
我想做一些事情(在活动中的onCreate()
上):
Bundle extras = getIntent().getExtras();
String extraStr = extras.getString("extra");
if (extraStr == null) {
extraStr = "extra not set";
}
但这会引发java.lang.NullPointerException
。
谢谢。
答案 0 :(得分:174)
使用Intent.hasExtra(String name)
检查意图中是否传递了name
的额外内容。
示例:
Intent intent = getIntent();
if (intent.hasExtra("bookUrl")) {
bookUrl = b.getString("bookUrl");
} else {
// Do something else
}
另外,如果没有传递额外内容,请直接使用Intent.getStringExtra(String name)
处理NullPointerException
的意图。
答案 1 :(得分:13)
好吧,我有类似的问题。在我的情况下,当我检查我的 bundle.getString()是否等于null时,发生了零点异常。
以下是我的案例解决方法:
Intent intent = getIntent();
if(intent.hasExtra("nomeUsuario")){
bd = getIntent().getExtras();
if(!bd.getString("nomeUsuario").equals(null)){
nomeUsuario = bd.getString("nomeUsuario");
}
}
答案 2 :(得分:5)
if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
// intent is not null and your key is not null
}
答案 3 :(得分:4)
我会在你的情况下使用这个解决方案。
String extraStr;
try {
extraStr = getIntent().getExtras().getString("extra");
} catch (NullPointerException e ) {
extraStr = "something_else";
}
答案 4 :(得分:4)
我认为你需要检查额外的时间!= null
Bundle extras = getIntent().getExtras();
if (extras != null) {
String extraStr = extras.getString("extra");
}else {
extraStr = "extra not set";
}