如何解决 Kotlin 中未找到数据绑定实用程序的问题

How to solve Databinding utils not found issue in kotlin

我目前正在尝试学习 android 开发,并且正在关注 codeLabs 的教程。

这是我的代码

package com.example.android.aboutme

import android.content.Context
import android.os.Bundle
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.example.android.aboutme.databinding.ActivityMainBinding


  class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
    
    }
}

无论发生什么,DataBindingUtils 总是红色的,我无法导入它

这是我的 gradle 构建的副本

buildFeatures{
    viewBinding = true
    dataBinding = true
}

这里也是xml文件

<Layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

 <LinearLayout android:orientation="horizontal">
    <Button
        android:id="@+id/done_button"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="@dimen/layout_margin"
        android:fontFamily="@font/roboto"
        android:text="@string/done"
        android:textAlignment="center" />
    <LinearLayout/>
 <Layout/>

我目前正在使用 android studio 4.0

我收到以下错误

 ActivityMainBinding! is not a subtype of ViewDataBinding!
try with this

 binding = DataBindingUtils.setContentView(this,R.layout.activity_main)

这只是 DataBindingUtil 上的一个小错误。

它应该是 DatabindingUtil 而不是 DataBindingUtils。

请试试这个

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    //setContentView(R.layout.activity_main)

    //it is not DataBindingUtilS it is DataBindingUtil
    binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

}

}

如果有帮助请告诉我。

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>

</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/done_button"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Test"
        android:textAlignment="center" />

</LinearLayout>

您的 XML 几乎没有错误。

请将此代码复制粘贴到您的布局中 xml 看看它是否有效。也请尝试清洁和重建,如果它给您带来问题,也请 Invalidate Caches /Restart

这是一个测试代码,如果它能正常工作,您可以包括我遗漏的字体和字符串等内容。