当前位置: 首页 > 面试题库 >

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

龙欣德
2023-03-14
问题内容

我有这段代码,用于检查从我的应用程序中许多地方调用的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);

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



 类似资料:
  • 问题内容: 在Linux中使用屏幕时,如何确定我是否在屏幕中?如果可以,我可以退出屏幕,但是如果没有,那么我将关闭终端。 在执行操作时,我可以查看是否还连接了其他屏幕,但是如何知道我的当前终端是否是这些已连接屏幕之一? 问题答案: 检查。如果为空,则您位于“真实”终端上。如果包含任何内容,则为您所在屏幕的名称。 如果您不在屏幕上: 如果您在屏幕上:

  • 如何判断sqlite3数据库中是否存在值,python 以下是我目前的代码: 如果数据库中没有电子邮件和用户名,我希望它只将值插入数据库,但我不知道从哪里开始。

  • 本文向大家介绍Shell脚本判断Apache进程是否存在,包括了Shell脚本判断Apache进程是否存在的使用技巧和注意事项,需要的朋友参考一下 写一个脚本检查Apache进程是否存在,若不存在则显示不存在,若存在则显示进程个数,当不等于10个时用红色字体通知管理员,并询问管理员是否启动Apache服务。

  • 本文向大家介绍jQuery判断对象是否存在的方法,包括了jQuery判断对象是否存在的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery判断对象是否存在的方法。分享给大家供大家参考。具体如下: 一、传统Javascript的写法 在jQuery中,var obj = $("#id")无论id这个控件是否存在,都是返回object,这样可就无法使用if(obj)来判断这个控件是

  • 函数名称:判断文件(夹)是否存在 函数功能: 判断文件(夹)是否存在 函数方法 flag = file.isExist(path) 参数 类型 必填 说明 path string 是 需要判断的文件(夹)路径 返回值 类型 说明 flag boolean true - 文件(夹)存在,false - 文件(夹)不存在 函数用例 path = "/sdcard/LuaBox/Projects/" f

  • aliyun oss 的 python sdk 如何批量判断文件是否存在? 现在的 bucket.object_exists 貌似只能一次判断一个,要判断多个就需要发出多次请求,比较烦,怎么在一次网络交互中多批量判断