【问题标题】:Kotlin extensions for Android: How to use bundleOf适用于 Android 的 Kotlin 扩展:如何使用 bundleOf
【发布时间】:2018-03-17 23:21:09
【问题描述】:

文档说:

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

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

我试过了:

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

但它显示错误。

【问题讨论】:

    标签: android kotlin android-bundle android-ktx


    【解决方案1】:

    如果它采用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
    【解决方案2】:

    这个怎么样?

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

    to 是创建Pair 对象的好方法。中缀函数的美感和极佳的可读性。

    【讨论】:

    • 我添加了插件 apply plugin: 'kotlin-android-extensions' ,但 bundleOf() 无法自行解决。还有什么要设置的吗?
    • bundleOf 与 android-kotlin-extension 无关。它是核心库的一部分。理想情况下,它应该可用。
    • @toobsco42 bundleOf 是 Android KTX 扩展功能的一部分。在此处查看文档:developer.android.com/kotlin/ktx(在 androidx.core.os 包中)
    • @toobsco42 将 bndleOf 导入更改为“androidx.core.os.bundleOf”
    【解决方案3】:

    只是为了完成其他答案:

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2016-06-16
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多