ObservableBoolean.get () всегда дает исключение нулевого указателя - PullRequest
0 голосов
/ 06 января 2019

Мой ObservableBoolean всегда вызывает исключение нулевого указателя "java.lang.NullPointerException: попытка вызвать виртуальный метод 'boolean android.databinding.ObservableBoolean.get ()' для ссылки на нулевой объект"

Я пытаюсь вызвать это через связанное представление. Вид модели выглядит так:

class TempViewModel {
    val isLayoutVisible: ObservableBoolean = ObservableBoolean(false)

    fun onClicked(view: View){
        isLayoutVisible.set(!isLayoutVisible.get())
    }
}

xml:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

<data>
    <import type="android.view.View"/>

    <variable
            name="tempViewModel"
            type="com.example.project.TempViewModel"/>
</data>

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_height="wrap_content">

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{tempViewModel::onClicked}"
            android:src="@drawable/ic_exclamation"/>

    <TextView
            android:layout_width="wrap_content"
            android:visibility="@{tempViewModel.isLayoutVisible ? View.VISIBLE : View.GONE}"
            android:layout_height="wrap_content"/>

</android.support.constraint.ConstraintLayout>
</layout>

Прослушиватели кликов переходят в onClicked, но затем вылетает на isLayoutVisible.get (). Кто-нибудь знает почему?

...