Ari*_*erá 13 android fragment android-intent kotlin
在我的片段上,我想得到ArrayList<Animal>.我创建了一个newInstance函数.
companion object {
private val ARG_TITLE = "ARG_TITLE"
private val ARG_ANIMALS = "ARG_ANIMALS"
fun newInstance(title: String,animals: ArrayList<Animal>): ExampleFragment{
val fragment = ExampleFragment()
val args = Bundle()
args.putString(ARG_TITLE, title)
args.putSerializable(ARG_ANIMALS, animals)
fragment.arguments = args
return fragment
}
}
Run Code Online (Sandbox Code Playgroud)
在我身上onCreate()我有这个.
private var title: String = ""
lateinit private var animals:ArrayList<Animal>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (arguments != null) {
title = arguments.getString(ARG_TITLE)
animals = arguments.getSerializable(ARG_ANIMALS)
}
}
Run Code Online (Sandbox Code Playgroud)
但
必需:找到ArrayList序列化!
无法转换为ArrayList.
Zoe*_*Zoe 15
如评论中所述,投下它:
注意:如果它是一个ArrayList(这意味着ArrayList- List和MutableList受到不同的影响),则不需要强制转换为Serializable .List并且MutableList必须强制转换为Serializable(否则它会显示"不兼容的类型"错误)
args.putSerializable(ARG_ANIMALS, animals as Serializable) //This is to cast it to the appropriate form in order for it to be serialized properly
Run Code Online (Sandbox Code Playgroud)
并在输出上镜像:
无论如何,在这里施展都是必要的.否则你只会得到一个Serializable而不是你序列化的类.
animals = arguments.getSerializable(ARG_ANIMALS) as ArrayList<Animal>
Run Code Online (Sandbox Code Playgroud)
必须在菱形中指定类型,否则由于animals: ArrayList<Animal>不匹配而导致错误ArrayList<*>
您可能希望查看使用List而不是ArrayList,以概括您接受哪些类型(包括实例的MutableList).
这仅适用于Animal实现Serializable.否则当你从捆绑中获取/获取列表时它会崩溃.如果列表中的类也是可序列化的,则列表仅可序列化.
| 归档时间: |
|
| 查看次数: |
3806 次 |
| 最近记录: |