23

文档说:

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

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

我试过:

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

但它显示错误。

4

3 回答 3

28

如果它需要 a 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
)
于 2018-03-17T23:23:19.923 回答
12

这个怎么样?

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

to是创建Pair对象的好方法。中缀功能之美和令人敬畏的可读性。

于 2018-03-18T06:55:08.570 回答
10

只是为了完成其他答案:

首先,要使用bundleOf,需要implementation 'androidx.core:core-ktx:1.0.0'build.gradlethen 中添加:

var bundle = bundleOf("KEY_PRICE" to 50.0, "KEY_IS_FROZEN" to false)
于 2019-02-20T20:14:18.900 回答