我想知道是否有人遇到过这个问题。 我正在尝试Kotlin代表。 但是首先,我有一个称为DataHolder的接口。我用它与片段进行通信。我使用它,是因为我有“通用”片段,例如AdditionalFieldsFragments,在这里我只想通过枚举显示一个列表,然后将值发布到LiveData中,然后观察非“通用”片段。我不使用SharedViewModel,因为我不能。
所以我的问题是,我创建了一个由扩展名调用的委托
inline fun <reified T> Fragment.holder(requestId: Int? = arguments?.get("requestId") as? Int): ReadOnlyProperty<Fragment, T> where T : DataHolder {
return DataHolderProperty(requested) // requestId cannot be null, if it is, it can be handled inside
}
这是我的问题。这个holder()
函数在Fragment init处调用,但是不幸的是,没有参数。
我正在这样使用
private val dataHolder by holder<DiscountDataHolder>()
也许我要使用导航组件。
我的问题是:
onCreate()
之后初始化吗?by lazy
解决吗? (如果这样的话,我想我必须忘记“委托”选项)init()
中获取有关调用者片段的一些信息?