Я пытаюсь обновить свой интерфейс при получении строки JSON из соединения WebSocket. У меня есть следующие настройки:
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel.getMessage().observe(this@MainActivity, Observer {
json -> Log.d("websockets", "Json string: $json")
output.text = json
})
ViewModel.kt
var jsonString = MutableLiveData<String>()
fun updateMessageFromWebSockets(string: String) {
jsonString.postValue(string)
}
fun getMessage(): LiveData<String> {
return jsonString
}
WebsocketManager.kt
override fun onMessage(webSocket: WebSocket, text: String) {
d("websockets", "here's the text: $text")
val mainViewModel = MainViewModel()
mainViewModel.updateMessage(text)
}
Теперь я Я могу сделать тост с этим текстом из моей модели представления, используя входящую строку json, чтобы я знал, что соединение с веб-сокетом настроено правильно, и я получаю данные, однако, я не могу больше ничего делать, в идеале, я хочу создавать алерты и диалоги, закусочные и др. c, но без запуска непосредственно из основной деятельности.
Правильно ли настроены мои liveata? Мои взгляды сохраняются, когда я набираю текст и поворачиваю экран, но наблюдаемое у меня, кажется, не работает. Моя идея заключается в том, что моя наблюдаемая будет запускать функцию диалога из MainActivity, когда она наблюдает за изменением строки (строка всегда будет уникальной и всегда одинаковой).
Спасибо