【问题标题】:ClassNotFoundException: Didn't find class "android.view.data" [duplicate]ClassNotFoundException:找不到类“android.view.data”[重复]
【发布时间】:2018-09-14 04:13:26
【问题描述】:

这是我的 xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    android:id="@+id/a"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.a.AFragment">
    <data>
        <import type="android.databinding.ObservableArrayMap"/>
        <variable name="user" type="ObservableArrayMap"/>
    </data>
    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{user.name}"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

运行时出现以下错误:

原因:android.view.InflateException:二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:膨胀类数据时出错 原因:android.view.InflateException:二进制 XML 文件第 9 行:膨胀类数据时出错 引起:java.lang.ClassNotFoundException:在路径上找不到类“android.view.data”:DexPathList [[zip文件“/data/app/x.x.x-2/base.apk”,zip文件“/data/ app/x.x.x-2/split_lib_dependencies_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_0_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_1_apk.apk”,压缩文件“/data /app/x.x.x-2/split_lib_slice_2_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_3_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_4_apk.apk”,压缩文件“/数据/app/x.x.x-2/split_lib_slice_5_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_6_apk.apk”,压缩文件“/data/app/x.x.x-2/split_lib_slice_7_apk.apk”,压缩文件“ /data/app/x.x.x-2/split_lib_slice_8_apk.apk", zip 文件 "/data/app/x.x.x-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/x.x.x-2/lib/arm, /system /lib, /vendor/lib]]

错误出现在&lt;data&gt; 行(开始标记)上。

是什么导致了这个错误,我该如何解决?

【问题讨论】:

  • 添加 标签作为你的 xml 的根目录。

标签: android android-databinding


【解决方案1】:

数据绑定布局文件略有不同,以layout 的根标记开头,后跟data 元素和视图根元素

https://developer.android.com/topic/libraries/data-binding/expressions

您没有通用布局标签

【讨论】:

  • 修复我的原始代码后,我收到此错误: > 无法在 android.widget.TextView 上找到参数类型为 V 的属性 'android:text' 的设置器,这是针对 android:text="@{user.name}"
  • @battery 你可以通过删除 .idea、.gradle 和 gradle 文件夹来解决它,并让 Android Studio 从 gradle files 从头开始​​重新创建整个项目。
  • @RavindraKushwaha 这有什么帮助?这是否以任何方式记录在某处?
  • @RavindraKushwaha 我想你的意思是,“你的问题解决了吗?”不,您的建议导致了另一个错误。
  • @battery 来自文档,type="com.example.User"... 不知道为什么你有这个“ObserableArrayMap”的东西
【解决方案2】:

这是sample layout 文件。相应地修改您的布局。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="user" type="com.example.User"/>
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"/>
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.lastName}"/>
   </LinearLayout>
</layout>

【讨论】:

    【解决方案3】:

    Android中的dataBinding需要用到以下这些东西

    首先确保您在模型的 build.gradle 中添加 dataBinding

    android {
        compileSdkVersion 27
        defaultConfig {
            applicationId "YOUR_APPP"
            minSdkVersion 15
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
    
        }
    
        dataBinding {
            enabled = true   //// This is need to be for the dataBinding
        }
        buildToolsVersion '27.0.3'
    }
    

    build.gradle(项目)中的第二个需要使用repositories 中的jcenter() 条目

        allprojects {
            repositories {
                google()
                jcenter()
                maven { url "https://jitpack.io" }
    
            }
        }
    
        task clean(type: Delete) {
          delete rootProject.buildDir
        }
    

    layout.xml 中的最后一个,您需要使用 layout 标记startend 标记,如下所示

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
    
    
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:padding="10dp"
            android:background="@drawable/splash"
            tools:context=".user.activity.SplashActivity">
    
    
             /**
              * USE YOUR ALL RESOURCES HERE
              */
    
        </RelativeLayout>
    </layout>
    

    更多了解请参考本站Reference site

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      相关资源
      最近更新 更多