У меня есть 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"/>
Но это не работает. У кого-нибудь есть идея, возможно ли это?
Чтобы 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().
Я рад, что мой ответ помог вам :)
Вам понадобится
<variable>
, у которого есть функция, которая завершает действие.