Android的Kotlin扩展:如何使用bundleOf

Mal*_*ngh 9 android kotlin android-bundle android-ktx

文件说:

fun bundleOf(vararg pairs: Pair<String, Any?>): Bundle
Run Code Online (Sandbox Code Playgroud)

返回一个新的Bundle,其中给定的键/值对作为元素.

我试过了:

   val bundle = bundleOf {
       Pair("KEY_PRICE", 50.0)
       Pair("KEY_IS_FROZEN", false)
   }
Run Code Online (Sandbox Code Playgroud)

但它显示错误.

A-S*_*ani 9

只是为了完成其他答案:

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

var bundle = bundleOf("KEY_PRICE" to 50.0, "KEY_IS_FROZEN" to false)
Run Code Online (Sandbox Code Playgroud)


Cha*_*har 8

这个怎么样?

val bundle = bundleOf (
   "KEY_PRICE" to 50.0,
   "KEY_IS_FROZEN" to false
)
Run Code Online (Sandbox Code Playgroud)

to是一种创建Pair对象的好方法.中缀功能的美妙与可读性.

  • 我添加了插件`apply plugin:'kotlin-android-extensions'`,但`bundleOf()`没有自行解决.还有其他设置吗? (3认同)
  • @ toobsco42 bundleOf是Android KTX扩展功能的一部分.看看这里的文档:https://developer.android.com/kotlin/ktx(它在androidx.core.os包中) (3认同)

Tod*_*odd 7

如果使用vararg,则必须提供参数作为参数,而不是lambda。尝试这个:

val bundle = bundleOf(
               Pair("KEY_PRICE", 50.0),
               Pair("KEY_IS_FROZEN", false)
             )
Run Code Online (Sandbox Code Playgroud)

从本质上讲,更改所需的{}括号()并在它们之间添加逗号。

另一种方法是使用Kotlin to函数,该函数将其左侧和右侧合并为Pair。这使得代码更加简洁:

val bundle = bundleOf(
    "KEY_PRICE" to 50.0,
    "KEY_IS_FROZEN" to false
)
Run Code Online (Sandbox Code Playgroud)