获取Kotlin空指针异常

问题描述 投票:0回答:1

这是我的ViewModel

 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}"/>

我只想举起用户名,但出现错误

kotlin.KotlinNullPointerException在com.aseemsalim.databindingpractice.ui.rubikscube.colorinput.ManualInputViewModel.onClickLogin(ManualInputViewModel.kt:15)

android kotlin android-databinding
1个回答
0
投票

您必须初始化LiveData属性:

class ManualInputViewModel : ViewModel() {
    var username = MutableLiveData<String>()
    var password = MutableLiveData<String>()

    fun onClickLogin(view: View){
        view.context.toast(username.value)
    }
 }
© www.soinside.com 2019 - 2024. All rights reserved.