我在布局文件中使用数据绑定。以下是相关的代码片段:
<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文件中。没有什么对我有用。这是一个已知的bug吗?如果是这样,有没有解决这个问题?
注意:eventUtils类是用Kotlin编写的但我不认为这是一个问题。
编辑:viewModel.state是State枚举数据类型的Observable字段。
答案 0 :(得分:3)
由于Observable
是app:tapEvent="@{(v) -> eventUtils.sendEvent(viewModel.state.get() == State.IN_PROGRESS ? Source.GAME_LOADING : Source.GAME_LOADING_ERROR)}"
字段,请使用此字段:
get()
必须在lambda中使用<div className="page-form__block">
<p> Is there any PPE associated with this work? </p>
<Field
name="ppe"
component={props =>
<PPE
{...props}
/>
}
/>
</div>
方法。