Можно ли завершить действие с помощью привязки данных в XML?

У меня есть 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"/>

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

Вам понадобится <variable>, у которого есть функция, которая завершает действие.

CommonsWare 30.05.2019 22:38
0
1
931
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы 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().

Я рад, что мой ответ помог вам :)

Javier Mendonça 31.05.2019 13:08

Другие вопросы по теме