安卓Kotlin扩展: 如何使用bundleOf

25

文档上说:

fun bundleOf(vararg pairs: Pair<String, Any?>): Bundle

返回一个包含给定键值对作为元素的新Bundle。

我尝试过:

   val bundle = bundleOf {
       Pair("KEY_PRICE", 50.0)
       Pair("KEY_IS_FROZEN", false)
   }

但是它显示错误。

3个回答

33
如果使用了 vararg,则必须将参数作为参数而不是 lambda 表达式提供。 请尝试以下内容:

如果它需要一个 vararg,你需要将你的参数作为参数提供,而不是作为 lambda表达式。尝试这个:

val bundle = bundleOf(
               Pair("KEY_PRICE", 50.0),
               Pair("KEY_IS_FROZEN", false)
             )

基本上,将您拥有的 {} 括号更改为 () 并在它们之间添加一个逗号。

另一种方法是使用 Kotlin 的 to 函数,它将左侧和右侧组合成一个 Pair。这使得代码更加简洁:

val bundle = bundleOf(
    "KEY_PRICE" to 50.0,
    "KEY_IS_FROZEN" to false
)

这个会自动转换或检查变量是否为“Parcelable”吗? - Rishabh Deep Singh

12

这个怎么样?

val bundle = bundleOf (
   "KEY_PRICE" to 50.0,
   "KEY_IS_FROZEN" to false
)

to 是创建 Pair 对象的绝佳方式。具有优美易读性的中缀函数之美。


4
我已添加插件 apply plugin: 'kotlin-android-extensions',但 bundleOf() 无法自行解析。是否还有其他设置需要完成? - Etienne Lawlor
bundleOf与android-kotlin-extension无关,它是核心库的一部分。理想情况下,它应该可用。 - Chandra Sekhar
3
bundleOf是Android KTX扩展函数的一部分,它位于androidx.core.os包中。请查看此处的文档:https://developer.android.com/kotlin/ktx - sbearben
@toobsco42 将 bndleOf 的导入更改为 "androidx.core.os.bundleOf"。 - Oleksandr Bodashko

11

只是为了完成其他答案:

首先,要使用bundleOf,需要将implementation 'androidx.core:core-ktx:1.0.0'添加到build.gradle中,然后:

var bundle = bundleOf("KEY_PRICE" to 50.0, "KEY_IS_FROZEN" to false)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接