【问题标题】:how can i use getLifecycleOwner() method in databinding xml files如何在数据绑定 xml 文件中使用 getLifecycleOwner() 方法
【发布时间】:2020-01-09 06:49:43
【问题描述】:

ViewDataBinding 类提供 setLifecycleOwner()setLifecycleOwner() 但是当我在 xml 中使用它时,例如

android:onClick="@{()->InteractionPresenter.toggleFeedDiss(getLifecycleOwner())}"

会出现这样的错误

[数据绑定] {"msg":"找不到标识符 \u0027lifecycleOwner\u0027\n\n检查标识符是否拼写 正确,并且没有 \u003cimport\u003e 或 \u003cvariable\u003e 标记 是 丢失。","file":"/Users/maxz/AndroidStudioProjects/ppjoke/app/src/main/res/layout/layout_feed_interaction.xml","pos":[{"line0":34,"col0":71 ,"line1":34,"col1":84}]}

所以如果我想在与 lambda 的数据绑定中使用 LifeCycleOwner,我必须声明另一个变量,例如

<variable
   name="lifeCycleOwner"
   type="androidx.lifecycle.LifecycleOwner" />

然后我将使用我自己的变量,它可以工作

但是我怎样才能通过第一种方式获得生命周期所有者?

【问题讨论】:

  • 第一种方式,你可能需要在xml中使用activity/fragment变量。

标签: android kotlin android-lifecycle android-databinding android-livedata


【解决方案1】:

要实现第一种方法,您必须将片段实例传递给您的布局。

<variable
    name="fragment"
    type="androidx.fragment.app.Fragment" />

然后使用

android:onClick="@{()->InteractionPresenter.toggleFeedDiss(fragment.viewLifecycleOwner)}"

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 2021-09-13
    • 2011-06-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多