Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过意图打包枚举_Android_Kotlin - Fatal编程技术网

Android 通过意图打包枚举

Android 通过意图打包枚举,android,kotlin,Android,Kotlin,我在通过intent打包枚举类型时遇到问题,问题在于这行intent.getParcelableArrayListExtra错误为 没有足够的信息来推断类型变量T的信息 override-fun-onCreate(savedInstanceState:Bundle?,persistentState:persistenablebundle?){ super.onCreate(savedInstanceState、persistentState) setContentView(R.layout.ma

我在通过intent打包枚举类型时遇到问题,问题在于这行
intent.getParcelableArrayListExtra
错误为

没有足够的信息来推断类型变量T的信息

override-fun-onCreate(savedInstanceState:Bundle?,persistentState:persistenablebundle?){
super.onCreate(savedInstanceState、persistentState)
setContentView(R.layout.main_活动)
如果(savedInstanceState==null)
setData(intent.getParcelableArrayListExtra(Application.BUNDLE_DATA)作为ArrayList)
}
枚举

@Parcelize
enum class DataEnum : Parcelable {

    Foo { override fun toString() = "Foo" },
    Bar { override fun toString() = "Bar" },
    Baz { override fun toString() = "Baz" };

    companion object {
        private fun list(): ArrayList<DataEnum> {
            return arrayListOf(
                FOO,
                BAR,
                BAZ
            )
        }
    }

}
@Parcelize
枚举类数据枚举:可包裹{
Foo{override fun toString()=“Foo”},
Bar{override fun toString()=“Bar”},
Baz{override fun toString()=“Baz”};
伴星{
私人娱乐列表():ArrayList{
返回arrayListOf(
福,
酒吧,
巴兹
)
}
}
}

Enum扩展了可序列化的

所以使用

Intent.putSerializable
Intent.getSerializable


你的
setData
可能不起作用,你应该在用片段事务添加片段之前使用
setArguments
,2)为什么不直接使用
putSerializable
对不起,没有收到你的消息,我正在进行一项活动,将数据设置为片段,希望这能有所帮助,片段应该通过
setArguments
获取数据。感谢您在
Activity to Fragment
communication advision via
setArguments
上的理解,我对此表示感谢,但现在的问题是
Activity to Activity
,我可以通过
putparcelablearlyistextra
ActivityA
发送数据,但在
activityB
中无法
getparcelablearlyistextra
。希望它是清楚的。谢谢布伦德尔,为了论证的缘故,请你提供一个可打包的例子,同时保持这个可序列化的答案完整。因为我阅读速度更快,而且我只想让所有东西都可以在应用程序中打包。还请阅读我对该问题的最后一条评论,我可以在activityA中
putParcelableArrayListExtra
,但由于编译错误,无法在activityB中
getParcelableArrayListExtra
。你是说
Bundle.putSerializable
?是的捆绑对不起:-)仅供参考“可打包比可序列化快”我一点也不担心,它是纳秒级的,除非你有不断被打包的巨大对象。让它工作起来,然后在必要时优化性能(我打赌你不会)
@Parcelize
enum class DataEnum : Parcelable {

    Foo { override fun toString() = "Foo" },
    Bar { override fun toString() = "Bar" },
    Baz { override fun toString() = "Baz" };

    companion object {
        private fun list(): ArrayList<DataEnum> {
            return arrayListOf(
                FOO,
                BAR,
                BAZ
            )
        }
    }

}