kotlin 我无法在数据绑定上使用livedata

bq9c1y66  于 2023-02-19  发布在  Kotlin
关注(0)|答案(1)|浏览(131)

我尝试在xml中以livedata的形式获取值,但收到此错误**"java. lang. RuntimeException:无法调用观察器方法"",原因是:java.lang.NullPointerException:尝试对空对象引用"**"调用虚方法"int java. lang. String. length()"
xml文件

<data>
     <variable
        name="detailViewModel"
        type="com.kseyko.satellite.ui.view.detail.DetailViewModel" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".ui.view.detail.DetailFragment">

    <TextView
        android:id="@+id/textViewDetailFirstFlight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="60dp"
        android:gravity="center"

android:text = "@{详细视图模型.格式日期(详细视图模型.卫星实时数据.首次飞行)}"/〉
取景器
类详细信息视图模型(私有值卫星存储库:卫星库):基础视图模型(){

private val _satelliteLiveData = MutableLiveData<Satellite>()
var satelliteLiveData: LiveData<Satellite> = _satelliteLiveData

fun fetchSatellite(satellitePosition: Int) {
    viewModelScope.launch {
        val satelliteLive = withContext(Dispatchers.IO) {
            satelliteRepository.getSatellite(satellitePosition)
        }
        _satelliteLiveData.value = satelliteLive
    }
}

fun formatDate(firstFlight: String?): String {
    var formatter = SimpleDateFormat("yyyy-MM-dd")
    val date = formatter.parse(firstFlight)
    formatter = SimpleDateFormat("dd.MM.yyyy")
    return formatter.format(date)
}

}
谢谢

oewdyzsn

oewdyzsn1#

您在哪里调用了fetchSatellite方法?空指针异常意味着您还没有为_satelliteLiveData设置数据。创建init { }块,然后将_satelliteLiveData放入其中以获取数据

相关问题