如何判断 Android 中是否存在 Intent 附加功能?
2022-08-31 17:26:39
我有以下代码,用于检查从我的应用中的许多位置调用的活动的 Intent 中的额外值:
getIntent().getExtras().getBoolean("isNewItem")
如果未设置 isNewItem,我的代码会崩溃吗?在我调用它之前,有没有办法判断它是否已经设置?
处理这个问题的正确方法是什么?
我有以下代码,用于检查从我的应用中的许多位置调用的活动的 Intent 中的额外值:
getIntent().getExtras().getBoolean("isNewItem")
如果未设置 isNewItem,我的代码会崩溃吗?在我调用它之前,有没有办法判断它是否已经设置?
处理这个问题的正确方法是什么?
正如其他人所说,两者都可能返回空值。因此,您不希望将调用链接在一起,否则最终可能会调用,这将引发 a 并导致应用程序崩溃。getIntent()
getExtras()
null.getBoolean("isNewItem");
NullPointerException
以下是我如何做到这一点。我认为它以最好的方式格式化,并且很容易被可能正在阅读您的代码的其他人理解。
// You can be pretty confident that the intent will not be null here.
Intent intent = getIntent();
// Get the extras (if there are any)
Bundle extras = intent.getExtras();
if (extras != null) {
if (extras.containsKey("isNewItem")) {
boolean isNew = extras.getBoolean("isNewItem", false);
// TODO: Do something with the value of isNew.
}
}
您实际上不需要调用,因为如果额外的不存在,将返回false。您可以将上述内容压缩为如下所示:containsKey("isNewItem")
getBoolean("isNewItem", false)
Bundle extras = getIntent().getExtras();
if (extras != null) {
boolean isNew = extras.getBoolean("isNewItem", false);
if (isNew) {
// Do something
} else {
// Do something else
}
}
您还可以使用这些方法直接访问您的附加内容。这可能是最干净的方式:Intent
boolean isNew = getIntent().getBooleanExtra("isNewItem", false);
实际上,这里的任何方法都是可以接受的。选择一个对你有意义的方法,然后这样做。
您可以执行以下操作:
Intent intent = getIntent();
if(intent.hasExtra("isNewItem")) {
intent.getExtras().getBoolean("isNewItem");
}