Kotlin代表片段参数

时间:2020-05-07 11:43:29

标签: android android-fragments kotlin delegates arguments

我想知道是否有人遇到过这个问题。 我正在尝试Kotlin代表。 但是首先,我有一个称为DataHolder的接口。我用它与片段进行通信。我使用它,是因为我有“通用”片段,例如AdditionalFieldsFragments,在这里我只想通过枚举显示一个列表,然后将值发布到LiveData中,然后观察非“通用”片段。我不使用SharedViewModel,因为我不能。

Representation

所以我的问题是,我创建了一个由扩展名调用的委托

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>()

也许我要使用导航组件。

我的问题是:

  1. 我可以以某种方式告诉委托人,它应该在onCreate()之后初始化吗?
  2. 我可以以某种方式重新分配委托setValue吗? (此方法尚不可行)
  3. 我必须用by lazy解决吗? (如果这样的话,我想我必须忘记“委托”选项)
  4. 是否有其他选择,例如我可以在目标片段的init()中获取有关调用者片段的一些信息?

0 个答案:

没有答案