Вот основное занятие
class MainActivity : AppCompatActivity() {
private lateinit var mViewModel: MainActivityVm
private lateinit var mTv: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.toolbar))
mTv = findViewById(R.id.tv)
mViewModel =
ViewModelProviders.of(this)
.get(MainActivityVm::class.java)
mViewModel.counter.observe(this, Observer<Int> { counter ->
mTv.setText(counter.toString())
})
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter.value++
}
}
}
// ...
}
Я пытаюсь увеличить счетчик в модели данных, когда нажимаю на потрясающую кнопку
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter.value++
}
}
, но получаю ошибку в строке mViewModel.counter.value++
Умное приведение к Int невозможно, потому что mViewModel.counter.value представляет собой сложное выражение
Что означает ошибка?
Вот данныемодель
class MainActivityVm : ViewModel() {
val counter = MutableLiveData<Int>().apply { postValue(0)}
}
редактировать
Если я закомментирую нулевую проверку
fab.setOnClickListener { view ->
//if(null != mViewModel.counter.value)
//{
mViewModel.counter.value++
//}
}
Я получаю ошибку
Разрешены только безопасные (?.) Или ненулевые вызовы (!!.) На обнуляемом приемнике типа Int?
edit
с использованиемнулевая проверка с !!
fab.setOnClickListener { view ->
if(null != mViewModel.counter.value)
{
mViewModel.counter!!.value++
}
}
дает начальную ошибку
Умное приведение к Int невозможно, потому что mViewModel.counter.value является сложным выражением