Android 从Kotlin synthetics迁移到Jetpack视图绑定后的TextView问题

Android 从Kotlin synthetics迁移到Jetpack视图绑定后的TextView问题,android,android-studio,kotlin,kotlin-android-extensions,android-viewbinding,Android,Android Studio,Kotlin,Kotlin Android Extensions,Android Viewbinding,我最近将绑定方法从Kotlin synthetics迁移到Jetpack视图绑定。我的片段中有AutofitTextView(由grantland提供),我在textview中设置了一些文本。在我开始活动并附加片段后,应用程序崩溃。错误说 java.lang.ClassCastExceptioni:androidx.appcompt.widget.AppCompatTextView不能强制转换为me.grantland.widget.AutofitTextView 因此,我决定从AutoFitT

我最近将绑定方法从Kotlin synthetics迁移到Jetpack视图绑定。我的片段中有AutofitTextView(由grantland提供),我在textview中设置了一些文本。在我开始活动并附加片段后,应用程序崩溃。错误说

java.lang.ClassCastExceptioni:androidx.appcompt.widget.AppCompatTextView不能强制转换为me.grantland.widget.AutofitTextView

因此,我决定从AutoFitTextView更改为AppCompatTextView,但我面临另一个问题。我无法生成应用程序,因为出现错误

非解析引用:setText

我尝试了各种settext方法,但都不起作用。TextView似乎被视为一个视图,因此它没有setText方法

========

配置详细信息

  • Android Studio 4.1.2
  • BuildToolsVersion28.0.3
  • JVM目标1.8
  • 数据绑定:编译器3.1.4
  • androidx.appcommpat:appcompat:1.2.0
==========

fragment_main.xml

<FrameLayout
    .... >
    <LinearLayout
        .... >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <me.grantland.widget.AutofitTextView
                android:id="@+id/myTextView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="This is textview" />
            ....
        </LinearLayout>
    </LinearLayout>
</FrameLayout>

....
设置文本

FragmentMainBinding.myTextView.text=“新文本”

试试这个样品

val binder =  FragmentMainBinding.bind(View.inflate(requireContext(), R.layout.fragment_main, null))

binder.myTextView.text = "The new text"

因此,如果这是
fragment\u main.xml
的整个xml,则需要用
标记将其全部打包。这是编译器构建绑定类的唯一方法

<layout
  ...>
    <FrameLayout
    .... >
    <LinearLayout
        .... >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <me.grantland.widget.AutofitTextView
                android:id="@+id/myTextView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="This is textview" />
            ....
        </LinearLayout>
    </LinearLayout>
  </FrameLayout>
</layout>

....

我找到了原因!!这是我的错。我有两个相同名称的布局,一个用于纵向布局,另一个用于横向布局。我迁移了纵向布局中的视图,而不是横向布局中的视图,因此在生成绑定类时,它会生成两个不同的TextView,因为View和View没有“text”属性。错误就是这么说的。

提供您的代码。@Eyosiyas补充道。我认为这可能不是解决方案。其他布局没有标签,工作正常;(提供整个碎片主布局和Kotlin代码。