如何使用liveData处理错误

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

在我的应用中,我有以下流程:

我的片段中的ClickListender:

  search_button.setOnClickListener {
        if(search_input.text.isNullOrEmpty())
            Toast.makeText(activity, "Input Error", Toast.LENGTH_LONG).show()
        else
            viewModel.onSearchButtonClicked(search_input.text.toString())
    }

onSearchButtonClicked内部的[viewModel

    fun onSearchButtonClicked(input: String) {
        coroutineScope.launch {
   repo.insertToDatabase(input)
        }
    }

insertToDatabase内部的[Repository

   suspend fun insertToDatabase(string: String) {
        withContext(Dispatchers.IO) {
            val dataList =
                ExternalApi.retrofitCall.getData(string).await()
            if (dataList.intialDataResult < 1) {
                //show error
            } else {
                //all good
                database.myDataBase.insertAll(dataList)
            }
        }
    }

如果intialDataResult小于1,我需要显示错误消息。我考虑过在存储库中创建初始值为false的MutableLiveData,然后通过viewModel从片段中侦听,但这不是一个好方法,因为我无法在显示后再次将LiveData设置为“ false”错误消息。

我还试图从insertToDatabase函数返回布尔值,并确定是否显示错误,但没有成功。

任何想法我该如何解决?

android kotlin android-livedata
1个回答
0
投票
创建一个类来存储工作结果
© www.soinside.com 2019 - 2024. All rights reserved.