Android sharedViewModel,如何从活动访问

Android sharedViewModel,如何从活动访问,android,kotlin,fragment,viewmodel,Android,Kotlin,Fragment,Viewmodel,我的片段和视图模型有问题。 这是我的片段中的代码: private val sharedViewModel: SharedViewModel by activityViewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) alarm.setOn

我的片段和视图模型有问题。 这是我的片段中的代码:

       private val sharedViewModel: SharedViewModel by activityViewModels()
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        alarm.setOnClickListener {
            sharedViewModel.alarmState.value = AlarmState.Activated
        }

        sharedViewModel.alarmState.observe(viewLifecycleOwner,  {   Observer<AlarmState> {
            when(it){
               AlarmState.Activated -> {
                   text_alarm.text = "Alarmanlage aktiviert"
                   alarm.setBackgroundResource(R.drawable.border_image_red);
                   alarm.setImageResource(R.drawable.alarmanlage_an)
               }
               AlarmState.GetsActivated ->{
                   text_alarm.text = "Alarmanlage wird aktiviert"
                   alarm.setBackgroundResource(R.drawable.border_image_orange);
                   alarm.setImageResource(R.drawable.alarmanlage_aus)
               }
               AlarmState.Deactivated ->{
                   text_alarm.text = "Alarmanlage aus"
                   alarm.setBackgroundResource(R.drawable.border_image_green);
                   alarm.setImageResource(R.drawable.alarmanlage_aus)
               }
           }
           }
          })

private val sharedViewModel:sharedViewModel by activityViewModels()
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
alarm.setOnClickListener{
sharedViewModel.alarmState.value=alarmState.Activated
}
sharedViewModel.alarmState.observe(viewLifecycleOwner,{Observer{
什么时候{
AlarmState.Activated->{
text\u alarm.text=“Alarmanlage aktiviert”
报警.设置背景资源(R.可绘制.边框\图像\红色);
alarm.setImageResource(R.drawable.alarmanlage_an)
}
AlarmState.GetsActivated->{
text_alarm.text=“Alarmanlage wird aktiviert”
alarm.setBackgroundResource(R.drawable.border\u image\u orange);
alarm.setImageResource(R.drawable.alarmanlage\u aus)
}
AlarmState.Deactivated->{
text\u alarm.text=“Alarmanlage aus”
alarm.setBackgroundResource(R.drawable.border\u image\u green);
alarm.setImageResource(R.drawable.alarmanlage\u aus)
}
}
}
})
这是我的ViewModel


class SharedViewModel:ViewModel(){
    var alarmState: MutableLiveData<AlarmState> = MutableLiveData<AlarmState>(Deactivated)
 }

类SharedViewModel:ViewModel(){
变量alarmState:MutableLiveData=MutableLiveData(已停用)
}
因此,AlarmState最初处于停用状态

单击“报警”将状态设置为激活状态

现在不应该报警状态观测器触发和执行吗

我做错了什么


非常感谢

你能展示一下
AlarmState
是如何实现的吗?删除额外的
Observer{}
,它应该是
sharedViewModel.AlarmState.observe(viewLifecycleOwner,{code})
SharedViewViewModel.AlarmState.observe(viewLifecycleOwner){code}
这是很多IR42的相同之处,移除观测者确实解决了它!你能展示一下
AlarmState
是如何实现的吗?移除额外的
Observer{}
,它应该是
sharedViewModel.AlarmState.observe(viewLifecycleOwner,{code})
SharedViewViewViewViewViewViewViewViewViewViewViewModel.AlarmState.Owner{code}
这是sameThanks的很多IR42,移除Observer确实修复了它!