【问题标题】:How do I know if a Uri is empty?我如何知道 Uri 是否为空?
【发布时间】:2015-04-28 04:39:36
【问题描述】:

我有一个应用程序,我需要让用户决定如何放置图片配置文件(相机或画廊)。我只有一个“Uri”类型的变量,但我不明白如何重置它并使其为空,或者检查它是否为空。因为当我选择一张图片时,如果你不喜欢刚刚放的那张,我必须有能力改变它。
我已经测试为

 if (followUri.equals (Uri.EMPTY)) {...}

但应用程序因空点异常而崩溃。

【问题讨论】:

    标签: android android-camera uri android-camera-intent


    【解决方案1】:

    只需检查 Empty URI 是否不等于 followUri,此检查包括 null 的检查:

            if (!Uri.EMPTY.equals(followUri)) {
                //handle followUri
            }
    

    【讨论】:

      【解决方案2】:

      如果 Uri 本身为 null,则调用 followUri.equals(Object) 将导致 NPE。更好的解决方案:

      if (followUri != null && !followUri.equals(Uri.EMPTY)) {
          //doTheThing()
      } else {
          //followUri is null or empty
      }
      

      【讨论】:

        【解决方案3】:

        如果您的应用在该阶段因 NPE 崩溃,followUri 很可能是 null

        另外Uri 对象是不可变的,请参阅此处http://developer.android.com/reference/android/net/Uri.html,因此您无法“重置”它。

        【讨论】:

          【解决方案4】:

          检查followUri != null 是否为空,然后你可以检查它是否为空,你会得到NPE,因为followUrinull,不是吗?之后可以设置followUri = Uri.EMPTY

          【讨论】:

            【解决方案5】:

            只是添加我的 2 美分,一个空 Uri 不会被视为空。 Uri.EMPTY 的值为 ""。如果您期望 null == Uri.EMPTY 为 trueenter code here,这可能会导致一些混乱。还有一个小的 kotlin 代码 sn-p :

             fun isUriEmpty(uri: Uri?):Boolean{
                return uri == null || uri == Uri.EMPTY
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-12-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多