android - 如何使用相同的变量从 2 个不同的类接收额外的 Intent ?

标签 android android-intent kotlin

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

 var artistName = intent.getStringExtra(viewHolderA.ARTIST_NAME)

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

 var artistName = intent.getStringExtra(viewHolderB.ARTIST_NAME)

有没有办法检查来自 viewHolderA 的 intent.getStringExtra 是否为空然后来自 viewholder 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 Bcondition 相同? A : B 在 Java 中。 (这里,当 null"" 时,方法 isNullOrEmpty() 为真。)

关于android - 如何使用相同的变量从 2 个不同的类接收额外的 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48866323/

相关文章:

android - recognizePurchase 应用内计费协程

java - 如何将bottomNavigationView中的selectedItem设置为空?

java - 在android中启动系统和第三方应用程序

Android onNewIntent 总是收到相同的 Intent

android - 使用广播 Intent/广播接收器将消息从服​​务发送到 Activity

java - 状态栏中的通知图标在少数 Android 设备中没有变化

java - 如何为应用程序的隐私添加 secret 功能

android - Jetpack Compose 导航和 StateFlow 的问题

android - 仅发布 APK 中的异常 "Module with the Main dispatcher is missing."

retrofit - Kotlin 特性和改造