как я могу использовать метод getLifecycleOwner () в файлах данных xml - PullRequest
0 голосов
/ 09 января 2020

Класс 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}]}

, поэтому, если я хочу использовать LifeCycleOwner в привязке данных к лямбде, я должен объявите другую переменную, такую ​​как

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

, тогда я буду использовать свою собственную переменную, она работает

, но как я могу получить владельца жизненного цикла первым способом?

1 Ответ

0 голосов
/ 09 января 2020

Чтобы достичь первого подхода, Вы должны передать экземпляр фрагмента в свой макет.

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

И затем использовать

android:onClick="@{()->InteractionPresenter.toggleFeedDiss(fragment.viewLifecycleOwner)}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...