我尝试在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)
}
}
谢谢
1条答案
按热度按时间oewdyzsn1#
您在哪里调用了
fetchSatellite
方法?空指针异常意味着您还没有为_satelliteLiveData
设置数据。创建init { }
块,然后将_satelliteLiveData
放入其中以获取数据