如何判断Android是否存在Intent Extras?

我有这段代码,用于检查从我的应用程序中许多地方调用的Activity的Intent中是否有多余的值:

getIntent().getExtras().getBoolean("isNewItem")

如果未设置isNewItem,我的代码会崩溃吗?在我调用它之前,有什么方法可以告诉它是否已设置吗?

处理此问题的正确方法是什么?

回答:

正如其他人所说,两者getIntent()和都getExtras()可能返回null。因此,您不想将调用链接在一起,否则您可能最终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.

}

}

实际上,您实际上不需要调用containsKey("isNewItem")as,getBoolean("isNewItem",

false)如果多余的对象不存在,则将返回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);

实际上,这里的任何方法都是可以接受的。选择一个对您有意义的方式,然后按照这种方式进行。

以上是 如何判断Android是否存在Intent Extras? 的全部内容, 来源链接: utcz.com/qa/407010.html

回到顶部