尝试将应用程序从支持迁移到androidx for android29。在android studio中出现错误无法生成视图绑定java.lang.StackOverflowError 。不显示任何文件名或行号时出错。
在研究了可能的解决方案之后,我发现此问题与绑定适配器有关。
在迁移应用程序时,一段代码由android studio自动转换。
旧代码
android:visibility="@{rating.isExtended.get()?View.VISIBLE:View.GONE}"
新代码
android:visibility="@{safeUnbox(rating.isExtended.get())?View.VISIBLE:View.GONE}"
我关注了this链接,并使用了以下代码段。
@BindingAdapter("app:goneUnless")
public static void goneUnless(View view,Boolean visible) {
view.visibility = visible ? View.VISIBLE : View.GONE;
}
现在问题已解决。