我的Github:https://github.com/Berkayszk/ArtBookTesting/blob/master/app/src/main/java/com/example/artbooktesting/viewmodel/ArtViewModel.kt
完整输出-androidx.appcompat.widget.appcompattedittext{2100e7f vfed.cl.f……143862-573952#7f080202 app:id/yearmext aid=10073741837}-
我正在制作一个艺术作品录音应用程序。当我想添加我的艺术时,我必须按下保存按钮。我在按下"保存"按钮"名称"、"艺术家名称"one_answers"年份"时检查了3首曲目。我遇到的错误是,无论我在年份部分键入什么,我都不会得到"年份应为数字"错误当我在我的程序中设置一个断点时,我会得到上面在我的年度文本中提到的输出。正因为如此,我无法将我的年份值转换为int值,并且我的程序不断出错,我无法添加art。
我的ArtViewModel
private var insertArtMsg = MutableLiveData<Resource<Art>>()
val insertArtMessage : LiveData<Resource<Art>>
get() = insertArtMsg
//Solving the navigation bug
fun resetInsertArtMsg() {
insertArtMsg = MutableLiveData<Resource<Art>>()
}
fun setSelectedImage(url : String) {
selectedImage.postValue(url)
}
fun deleteArt(art: Art) = viewModelScope.launch {
repository.deleteArt(art)
}
fun insertArt(art: Art) = viewModelScope.launch {
repository.insertArt(art)
}
fun makeArt(name : String, artistName:String, year: String) {
if (name.isEmpty() || artistName.isEmpty() || year.isEmpty() ) {
insertArtMsg.postValue(Resource.error("Enter name, artist, year", null))
return
}
val yearInt =try {
year.toInt()
} catch (e: Exception) {
e.printStackTrace()
insertArtMsg.postValue(Resource.error("Year should be number..",null))
return
}
val art = Art(name, artistName, yearInt,selectedImage.value?: "")
insertArt(art)
setSelectedImage("")
insertArtMsg.postValue(Resource.success(art))
}
您使用的是year.toInt,它在尝试块后将其转换为整数,您应该使用if块并将int检查为变量true。除非它存储为零。您可以将零捕获为不需要的输入变量。