Android 通过意图打包枚举
我在通过intent打包枚举类型时遇到问题,问题在于这行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.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 viasetArguments
上的理解,我对此表示感谢,但现在的问题是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
)
}
}
}