android - 尝试使用 MutableLiveData 值时出现 NullPointerException
问题描述
这是我的视图模型
class ManualInputViewModel : ViewModel() {
var username: MutableLiveData<String>? = null
var password: MutableLiveData<String>? = null
fun onClickLogin(view: View){
view.context.toast(username?.value!!)
}
}
这是我的活动
class ManualInputActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var binding : ActivityManualInputBinding = DataBindingUtil.setContentView(this,R.layout.activity_manual_input)
var viewModel = ViewModelProviders.of(this).get(ManualInputViewModel::class.java)
binding.viewmodel = viewModel
binding.lifecycleOwner = this
}
}
这是我用于编辑文本的 xml 代码
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:inputType="text"
android:hint="Username"
android:drawableLeft="@drawable/ic_person_black_24dp"
android:text="@={viewmodel.username}"/>
我只想敬酒用户名,但我收到错误消息
com.aseemsalim.databindingpractice.ui.rubikscube.colorinput.ManualInputViewModel.onClickLogin 处的 kotlin.KotlinNullPointerException(ManualInputViewModel.kt:15)
解决方案
您必须初始化 LiveData 属性:
class ManualInputViewModel : ViewModel() {
var username = MutableLiveData<String>()
var password = MutableLiveData<String>()
fun onClickLogin(view: View){
view.context.toast(username.value)
}
}