[英]Android Databinding : ConcurrentModificationException while using ternary operator in method parameter
我在布局文件中使用数据绑定。 以下是相关事件代码段:
<ImageButton
android:id="@+id/btn_cross"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_close_white"
app:onClick="@{(v) -> gameManager.dismissAndDestroyDialog()}"
app:tapEvent="@{(v) -> eventUtils.sendEvent(viewModel.state == State.IN_PROGRESS ? Source.GAME_LOADING : Source.GAME_LOADING_ERROR)}"/>
viewModel
:这是此布局的viewModel。
tapEvent
:这用于绑定适配器。
Source
:一个枚举类State
:一个枚举类
执行此操作时,出现以下异常:
e: error: cannot generate view binders java.util.ConcurrentModificationException
e:
e: at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437)
e: at java.util.HashMap$ValueIterator.next(HashMap.java:1466)
e: at android.databinding.tool.expr.CallbackExprModel.seal(CallbackExprModel.java:63)
e: at android.databinding.tool.expr.LambdaExpr.setup(LambdaExpr.java:154)
e: at android.databinding.tool.Binding.resolveCallbackParams(Binding.java:93)
e: at android.databinding.tool.BindingTarget.resolveCallbackParams(BindingTarget.java:175)
e: at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:237)
e: at android.databinding.tool.DataBinder.<init>(DataBinder.java:52)
e: at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:88)
e: at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:187)
e: at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:184)
如果您需要更多详细信息,请发表评论。 我也用String param在不同的xml文件中尝试了这个。 什么都没有为我工作。 这是一个已知的错误吗? 如果是这样,是否有任何解决方法?
注意:eventUtils类是用Kotlin编写的,但在这里我认为这不是问题。
编辑:viewModel.state是State枚举数据类型的Observable字段。
由于viewModel.state
是一个Observable
字段,请使用以下命令:
app:tapEvent="@{(v) -> eventUtils.sendEvent(viewModel.state.get() == State.IN_PROGRESS ? Source.GAME_LOADING : Source.GAME_LOADING_ERROR)}"
在lambda内部必须使用get()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.