0
点赞
收藏
分享

微信扫一扫

RPC远程调用的序列化框架

在开发过程中经常遇到空值导致的 Crash 问题,要是能给变量设置默认值将会避免很多的麻烦。我将介绍在Android开发中遇到的nul值和空字符串问题。

假如我们有一个dialog 界面,其中1和2 是需要设置默认值的地方,因为如果为空则会出现崩溃问题。
在这里插入图片描述

val UrlName = dialog.findViewById<EditText>(R.id.name)
val resolutionButton = dialog.findViewById<EditText>(R.id.resolution)

像上述控件中由用户所输入的内容,默认为字符串类型,当用户在UrlName位置没有输入内容时,则默认值为空字符串””,而不是 nul。接下来获取UrlName位置的数据,如果为“”的话,则设置默认值为test

val inputName = if(UrlName.text.isNullOrBlank()){
                "test"
            }else{
                UrlName.text
            }

使用 isNullOrBlank() 函数来检查字符串是否为 null 或空字符串。如果 UrlName.textnull 或空字符串,inputName 将被赋值为 “test”,否则将使用 UrlName.text 的值。

如果 UrlName.textnull,在 Kotlin 中使用 Elvis 操作符 ?:

val inputName = UrlName.text ?: "test"

在 Kotlin 中使用 Elvis 操作符 ?: 时,空字符串被视为非空值,不会被视为 null。因此,如果 UrlName.text 是空字符串,inputName 将被赋值为空字符串而不是备用值 “test”。即只有当 UrlNameUrlName.textnull 时,Elvis 操作符 ?: 才会返回备用值。

resolutionButton位置的数据获取,可以直接使用 Elvis 操作符 ?:,如下所示。

var inputText = resolutionButton.text.toString().toIntOrNull()?:720

如果说你不太确实是空字符串还是null,可以直接使用isNullOrBlank()。当然也可以分开写代码,一步步排查。

 val textValue = UrlName?.text
 val inputName = textValue ?: "test"

总之,当需要处理空值时,可以使用 toIntOrNull(),另外多了解一些 Elvis 操作符 ?: 在日常开发中真的很有用。

最近在阅读《如何阅读“奇特的一生”》,书籍中讲的时间统计法真的很有用,非常推荐给大家。

在这里插入图片描述

举报

相关推荐

0 条评论