我在一个类中有一个变量,它像这样从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。)