我在一个类中有一个变量,它像这样从viewHolder A获取意图的额外值

 var artistName = intent.getStringExtra(viewHolderA.ARTIST_NAME)

现在说我有viewHolder B,我也想将一个值传递给artistName
 var artistName = intent.getStringExtra(viewHolderB.ARTIST_NAME)

有没有一种方法可以检查viewHolderA中的intent.getStringExtra是否为空,然后查看者B中的getStringExtra?

最佳答案

如果未将字符串extra viewHolderA.ARTIST_NAME设置为"",则intent.getStringExtra(viewHolderA.ARTIST_NAME)将返回null或一些有意义的值。

在这种情况下,

var artistName = intent.getStringExtra(viewHolderA.ARTIST_NAME) ?: intent.getStringExtra(viewHolderB.ARTIST_NAME)

这等于
var artistName: String? = null
if (intent.getStringExtra(viewHolderA.ARTIST_NAME) == null) {
    artistName = intent.getStringExtra(viewHolderB.ARTIST_NAME)
} else {
    artistName = intent.getStringExtra(viewHolderA.ARTIST_NAME)
}

使用Elvis operator

如果我们不确定viewHolderA.ARTIST_NAME是否可以是""
您可以使用
var artistName = if (intent.getStringExtra(viewHolderA.ARTIST_NAME).isNullOrEmpty()) {
    intent.getStringExtra(viewHolderB.ARTIST_NAME)
} else {
    intent.getStringExtra(viewHolderA.ARTIST_NAME)
}

因为Kotlin中的if (condition) A else B与Java中的condition ? A : B相同。 (在这里,方法isNullOrEmpty()null""时为true。)

08-04 07:16