Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么零食的文本只显示一次?_Android_Kotlin - Fatal编程技术网

Android 为什么零食的文本只显示一次?

Android 为什么零食的文本只显示一次?,android,kotlin,Android,Kotlin,下面的代码基于项目架构示例,您可以看到它 在我看来,UI将首先显示带有R.string.description\u提示的零食文本,然后显示带有R.string.empty\u task\u消息的零食文本 但我发现只有显示带有R.string.empty_task_消息的零食文本,如何修复它 TasksFragment.kt TasksViewModel.kt 您可以使用Snackbar.Callback。您可以拥有一个列表,其中包含要显示的消息、一个调用以显示snackbar消息的函数,以及一个

下面的代码基于项目架构示例,您可以看到它

在我看来,UI将首先显示带有R.string.description\u提示的零食文本,然后显示带有R.string.empty\u task\u消息的零食文本

但我发现只有显示带有R.string.empty_task_消息的零食文本,如何修复它

TasksFragment.kt

TasksViewModel.kt


您可以使用Snackbar.Callback。您可以拥有一个列表,其中包含要显示的消息、一个调用以显示snackbar消息的函数,以及一个从回调调用snackbar onDismiss以触发显示snackbar消息以及消息列表中的下一条消息时要更新的livedata.g。指数+1

private fun setupSnackbar() {
        view?.setupSnackbar(this, viewModel.snackbarText, Snackbar.LENGTH_SHORT)
        viewModel.setMy1()
        //Wait until UI updated
        viewModel.setMy2()       
}
class TasksViewModel(
    private val tasksRepository: TasksRepository,
    private val savedStateHandle: SavedStateHandle
) : ViewModel() {


  private val _snackbarText = MutableLiveData<Event<Int>>()
  val snackbarText: LiveData<Event<Int>> = _snackbarText

    fun setMy1(){
        _snackbarText.value=Event(R.string.description_hint)
    }

    fun setMy2(){
        _snackbarText.value=Event(R.string.empty_task_message)
    }
    ...

}