android - Scala 支持 Android 的 Parcelables 吗?

标签 android scala parcelable

我读到,由于 Scala 编译器的魔力,可以在 Scala 中实现 Android Parcelable 模式(需要静态类成员)。然而,关于这方面的信息很少,我不确定......

  • ...如果这是真的
  • ...如果我必须处理某些事情(例如设置编译器标志?)
  • ...CREATOR 字段所在的位置(类或同伴?)以及如何定义它(def、val、var?)

我尝试了各种组合,但最终总是出现异常,告诉我 CREATOR 字段丢失。

最佳答案

至少在 Scala 2.11.2 中,CREATOR 字段会进入伴生对象:

class ParcelExample( val some: String, val arbitrary: Int, val values: Boolean ) extends Parcelable
{
    override def describeContents() = 0

    override def writeToParcel( dest: Parcel, flags: Int )
    {
        dest.writeString( some )
        dest.writeInt( arbitrary )
        dest.writeValue( values )
    }
}

object ParcelExample
{
    val CREATOR: Parcelable.Creator[ParcelExample] = new Parcelable.Creator[ParcelExample]
    {
        override def createFromParcel( source: Parcel ): ParcelExample = new ParcelExample(
            source.readString(),
            source.readInt(),
            source.readValue( classOf[Boolean].getClassLoader ).asInstanceOf[Boolean]
        )

        override def newArray( size: Int ): Array[ParcelExample] = new Array[ParcelExample]( size )
    }
}

我创建了一个 scala 宏,用于生成可分割的样板 https://github.com/taig/parcelable

关于android - Scala 支持 Android 的 Parcelables 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136806/

相关文章:

java - 如何使用命令行在项目中执行 “Sync Project with Gradle Files”?

android - 如何制作通用的 AsyncTask?

scala - Slick 3.0-RC3 失败并出现 java.util.concurrent.RejectedExecutionException

scala - 如何更改 Intellij 想法以使用 Scala 2.11 进行编译?

java - 无法通过 bundle 使用 putparcelablearraylist 将对象的 Arraylist 发送到 fragment ?

java - 在android中实现Parcelable,onRestoreInstanceState没有被调用

android - Android Studio 2.1.3 的 WSO2 代理编译错误

Android - TimePicker 分钟到 15

scala - 有没有办法在 Scala 中匹配(switch case)lambda 表达式?

android - 解码 Parcelable 列表时出现 ClassNotFoundException