【发布时间】:2021-06-05 18:52:32
【问题描述】:
我检查了其他问题,但似乎都没有解决我的问题。
我的HomeViewModel 中有两个suspend funs,我在HomeFragment 中调用它们(带有微调器文本参数)。
HomeViewModel中的两个挂起函数:
suspend fun tagger(spinner: Spinner){
withContext(Dispatchers.IO){
val vocab: String = inputVocab.value!!
var tagger = Tagger(
spinner.getSelectedItem().toString() + ".tagger"
)
val sentence = tagger.tagString(java.lang.String.valueOf(vocab))
tagAll(sentence)
}
}
suspend fun tagAll(vocab: String){
withContext(Dispatchers.IO){
if (inputVocab.value == null) {
statusMessage.value = Event("Please enter sentence")
}
else {
insert(Vocab(0, vocab))
inputVocab.value = null
}
}
}
这就是我在HomeFragment 中称呼它们的方式:
GlobalScope.launch (Dispatchers.IO) {
button.setOnClickListener {
homeViewModel.tagger(binding.spinner)
}
}
在tagger 我收到错误“只能在协程主体内调用暂停函数”。但它已经在全球范围内。如何避免这个问题?
【问题讨论】:
标签: android kotlin kotlin-coroutines