无法生成视图绑定 java.lang.StackOverflowError

Aza*_*pta 3 android android-studio androidx

尝试将应用程序从支持迁移到 androidx for android 29。在 android studio 中出现错误无法生成视图绑定 java.lang.StackOverflowError。错误未显示任何文件名或行号。

在探索了可能的解决方案后,我发现这个问题与绑定适配器有关。

在迁移应用程序时,android studio自动转换了一段代码。

旧代码

android:visibility="@{rating.isExtended.get()?View.VISIBLE:View.GONE}"
Run Code Online (Sandbox Code Playgroud)

新代码

android:visibility="@{safeUnbox(rating.isExtended.get())?View.VISIBLE:View.GONE}"
Run Code Online (Sandbox Code Playgroud)

我点击了链接并使用了以下代码片段。

@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
    view.visibility = visible ? View.VISIBLE : View.GONE;
}
Run Code Online (Sandbox Code Playgroud)

现在问题解决了。

Kav*_*a_p 5

该错误是由于getValue()get()layout xml file.

在此输入图像描述

在我的一个layout.xml 文件中,我编写了mutableLiveDataVariable.getValue(),这是一种错误的做法。当我的工作室版本是3.5.1时,它可以工作,没有出现任何错误。

一旦我更新到3.5.3。我开始得到cannot generate view binders java.lang.StackOverflowError。所以我删除了getValue()代码并将其更改为 android:text="@={viewModel.firstName}"

它奏效了。

请检查以下链接,其中有报道。

https://issuetracker.google.com/issues/143778134

https://issuetracker.google.com/issues/144604674