728x90
반응형
SMALL
var onReadyDevice: MediatorLiveData<Int> = MediatorLiveData()
fun _onReadyDevice(): Int{
return if(emg1Connected.value == true && emg2Connected.value == true) EMG_DEVICE_1_2
else if (emg1Connected.value == true) EMG_DEVICE_1
else if (emg2Connected.value == true) EMG_DEVICE_2
else -1
}
init{
onReadyDevice.addSource(emg1Connected) {
onReadyDevice.value = _onReadyDevice()
}
onReadyDevice.addSource(emg2Connected) {
onReadyDevice.value = _onReadyDevice()
}
}
MediatorLiveData를 위와 같이 만들어주었음에도 불구하고, LiveData변화에 따라 MediaotrLiveData의 value가 변하지 않고, null만 반환하여 addSource가 작동하지 않았습니다.
그 이유를 알아보니,
MediatorLiveData의 addSource 메서드 콜백이 트리거 되려면, MediaotrLiveData 자기자신또한 observing 되어야 한다는 것입니다.
그래서, Activity나 Fragment에서 observer를 추가해주어야 했습니다.
요로코롬 Activity에서 빈 observer를 추가해주었더니. 작동하였습니다.
viewModel.onReadyDevice.observe(this@AngleActivity,{
// do nothing
})
굿 ^^!
728x90
반응형
LIST
'그 외 코드 > 오류 해결' 카테고리의 다른 글
Window "드라이브(C:) 검사 및 복구 중: 100% 완료" 에서 멈추는 현상 (3) | 2021.04.16 |
---|---|
[안드로이드] ViewPager(or ScrollView) 안에 있는 MPAndroidChart의 좌우, 상하 Scroll 하기 (0) | 2021.03.15 |
LiveData 데이터 바인딩 안될 때 (0) | 2021.02.26 |
[RPI/Python] ModuleNotFoundError 해결하기 (2) | 2021.01.06 |