android - setOnMenuItemClickListener 只执行一次
问题描述
invite.setOnMenuItemClickListener {
drawerLayout.closeDrawer(GravityCompat.START)
mainViewModel.executeInvite(
InviteBody(
Constants.apiKey,
Constants.apiPass,
Constants.apiInviteService
)
)
true
}
由于调用了 mainViewModel.executeInvite函数,监听器只执行一次。
executeInvite 是下面使用协程的函数:
fun executeInvite(inviteBody: InviteBody) {
viewModelScope.launch {
如果我删除这段代码,一切都会完美运行。
邀请是侧面菜单中的一个项目,可在点击时从后端生成动态链接。
解决方案
如果我删除这段代码,一切都会完美运行。
所以你告诉我如果你把
invite.setOnMenuItemClickListener {
drawerLayout.closeDrawer(GravityCompat.START)
Log.d("asdf", "hello")
true
}
在 中executeInvite
,然后按 3 次邀请菜单项,您会看到 3 条日志语句说“你好”?如果是这样,那么您的侦听器应该是正确的,并且错误发生在executeInvite
正在执行的代码中的某处。
如果是这种情况,您可以通过执行以下操作进行调试:
fun executeInvite(inviteBody: InviteBody) {
viewModelScope.launch {
runCatching { /* whatever code you're doing */ }
.onSuccess { Log.d("asdf", "successful!") }
.onFailure { throwable -> Log.d("asdf", "failure!", throwable) }
}
}
推荐阅读
- node.js - 在带有 EJS 模板的 Node express 应用程序中使用 React 组件 UI
- xamarin.forms - Xamarin Forms:DisplayAlert 背景点击触发取消事件
- flutter - 错误:没有为类型 'RSSParser' 定义 getter 'title'
- python - 在同一日期范围内过滤 df
- docker - pod 部署后未反映的更改
- linux - Xfoil 正在运行但不会绘制数据,“无法打开显示...正在中止”
- custom-wordpress-pages - 使用 pagebuilder 主题(主要是 Elementor)时未显示自定义页面模板
- javascript - 除法 REACT 的条件显示
- .net - 从多个线程安全地更新 WinForms 列表控件
- pandas - SettingWithCopyWarning : self.obj[item_labels[indexer[info_axis]]] = value_ 问题我无法克服这个问题