如何使用相同的变量来接收来自2个不同类的额外意图?

时间:2018-02-19 12:33:15

标签: android android-intent kotlin

我在一个类中有一个变量,它从viewHolder A得到了意图额外的值,就像这样

 var artistName = intent.getStringExtra(viewHolderA.ARTIST_NAME)

现在假设我有viewHolder B,我想将值传递给artistName

 var artistName = intent.getStringExtra(viewHolderB.ARTIST_NAME)

有没有办法检查来自viewHolderA的intent.getStringExtra是否为空,然后是来自viewholder B的getStringExtra?

2 个答案:

答案 0 :(得分:3)

如果您没有将字符串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""时均为真。)

答案 1 :(得分:0)

我想我找到了答案。如果我错了,请纠正我。

我应该使用intent.hasExtra()来检查viewHolderAviewHolderB是否有值,然后从viewHolder有值的值中获取值。