Можно ли завершить действие через привязку данных в XML? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть ImageView (кнопка «Назад») внутри действия, и я хочу завершить действие, используя привязку данных в самом XML как таковое:

<ImageView
        android:id="@id/ImageView_fromAddItemActivity_BackIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:onClick = "@{ finish()}"
        app:srcCompat="@drawable/ic_back_dark"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

Но это не работает.У кого-нибудь есть идея, возможно ли это?

1 Ответ

0 голосов
/ 31 мая 2019

Для работы onClick() необходимо использовать следующие обозначения: android:onClick=@{() -> function()}.

Что вы можете сделать, это передать Activity в привязке данных как переменную, то есть

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="activity"
            type="android.app.activity" />
    </data>
    <ConstraintLayout... /> <!-- UI layout's root element -->
</layout>

, затем сделать activity.finish().Я бы так не поступил, поскольку вы тесно связываете контекст с привязкой данных.Вместо этого вы могли бы пройти через viewmodel, который вы можете связать, а затем выполнить Finish ().

...