Android 无法访问片段参数中的Parcelable(错误:';参数';是可变属性)
如何使用kotlin正确访问片段中的参数 这就是我想要实现的目标:Android 无法访问片段参数中的Parcelable(错误:';参数';是可变属性),android,android-fragments,kotlin,Android,Android Fragments,Kotlin,如何使用kotlin正确访问片段中的参数 这就是我想要实现的目标: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if(arguments!=null){ detail = Parcels.unwrap(arguments.getParcelable(DETAIL_KEY)) } } 但是编译器正确地抱怨了这个错误: 错误:无法对“Bundle”
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(arguments!=null){
detail = Parcels.unwrap(arguments.getParcelable(DETAIL_KEY))
}
}
但是编译器正确地抱怨了这个错误:
错误:无法对“Bundle”进行智能转换,因为“arguments”是一个可变属性,此时可能已更改
我想知道:除了使用,还有什么优雅的方法来处理这个问题吗代码>操作员
提前谢谢。原来我很笨,我可以做:
detail = Parcels.unwrap(arguments?.getParcelable(DETAIL_KEY))
编译器没有任何抱怨。结果证明我很愚蠢,我可以做:
detail = Parcels.unwrap(arguments?.getParcelable(DETAIL_KEY))
val arguments = arguments
detail = arguments?.let { args -> Parcels.unwrap(args.getParcelable(DETAIL_KEY)) }
编译器没有任何抱怨。是的,这确实有效。(即使问题更新了)但我不喜欢仅仅为了声明val
(尤其是使用相同的名称)而这样做。这是常见的做法吗?我经常这样做,令人惊讶。事实上,我刚想到我们可以使用it
来避免赋值,就像这样:参数?让{detail=Parcels.unwrap(it.getParcelable(detail_KEY))}
没错。尽管我更喜欢将其命名为其他名称,例如args
。如果在if(!=null
语句中使用args,则需要val
赋值是的,这确实有效。(即使问题已更新),但我不喜欢声明val
(尤其是使用相同的名称)只是这样做。这是常见的做法吗?我经常这样做,令人惊讶。事实上,我刚想到我们可以使用it
来避免赋值,就像这样:参数?.let{detail=Parcels.unwrap(it.getParcelable(detail_KEY))}
没错。尽管我更喜欢将其命名为其他名称,例如args
。如果在if(!=null
语句中使用args,则需要val
赋值
val arguments = arguments
detail = arguments?.let { args -> Parcels.unwrap(args.getParcelable(DETAIL_KEY)) }