代码之家  ›  专栏  ›  技术社区  ›  Alexei

android.view.inflateexception:binary xml文件行8:binary xml文件行2:扩展类布局时出错

  •  0
  • Alexei  · 技术社区  · 5 年前

    在我的Android应用程序中

    等级属性:

    android.useAndroidX=true
    android.enableJetifier=true
    

    在我的主布局中(nav_drawer_main):

    <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                            android:id="@+id/drawer_layout"
                                            android:layout_width="match_parent"
                                            android:layout_height="match_parent">
    
        <!-- Framelayout to display Fragments -->
    
        <include
                android:id="@+id/mainToolBar"
                layout="@layout/tool_bar"/>
    
        <FrameLayout
                android:id="@+id/frame_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
        </FrameLayout>
    
        <!-- Listview to display slider menu -->
    
        <ListView
                android:id="@+id/list_slidermenu"
                android:layout_width="288dp"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:background="@color/list_background"
                android:choiceMode="singleChoice"
                android:divider="@null"
                android:listSelector="@drawable/list_selector"
                android:paddingLeft="16dip"
                android:paddingRight="16dip"/>
    
    </androidx.drawerlayout.widget.DrawerLayout>
    

    这里是我的工具栏布局:

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
    
    
        <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/toolBarConstraintLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
            <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolBar"
                    android:layout_width="0dp"
                    android:layout_height="56dp"
                    android:background="?android:attr/selectableItemBackground"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:theme="@style/ThemeOverlay.AppCompat.Dark" />
    
            <TextView
                    android:id="@+id/toolbaTitleTextView"
                    style="@style/textViewOneLine"
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    android:gravity="center"
                    android:text="@string/application_name"
                    app:textAllCaps="true"
                    android:textColor="@android:color/white"
                    android:textSize="13sp"
                    android:textStyle="bold"
                    app:layout_constraintBottom_toBottomOf="@+id/toolBar"
                    app:layout_constraintEnd_toEndOf="@+id/toolBar"
                    app:layout_constraintStart_toStartOf="@+id/toolBar"
                    app:layout_constraintTop_toTopOf="@+id/toolBar" />
    
        </androidx.constraintlayout.widget.ConstraintLayout>
    </layout>
    

    活动中:

    setContentView(R.layout.nav_drawer_main);
    

    但我得到运行时异常:

    E/AndroidRuntime( 4390): FATAL EXCEPTION: main
    E/AndroidRuntime( 4390): Process: com.myproject, PID: 4390
    E/AndroidRuntime( 4390): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject/com.myproject.MainNavigationDrawerFragmentActivity_}: android.view.InflateException: Binary XML file line #8: Binary XML file line #2: Error inflating class layout
    E/AndroidRuntime( 4390):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
    E/AndroidRuntime( 4390):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
    E/AndroidRuntime( 4390):    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    E/AndroidRuntime( 4390):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
    E/AndroidRuntime( 4390):    at android.os.Handler.dispatchMessage(Handler.java:102)
    E/AndroidRuntime( 4390):    at android.os.Looper.loop(Looper.java:148)
    E/AndroidRuntime( 4390):    at android.app.ActivityThread.main(ActivityThread.java:5417)
    E/AndroidRuntime( 4390):    at java.lang.reflect.Method.invoke(Native Method)
    E/AndroidRuntime( 4390):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    E/AndroidRuntime( 4390):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    E/AndroidRuntime( 4390): Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #2: Error inflating class layout
    E/AndroidRuntime( 4390):    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    E/AndroidRuntime( 4390):    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    E/AndroidRuntime( 4390):    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    E/AndroidRuntime( 4390):    at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393)
    E/AndroidRuntime( 4390):    at android.app.Activity.setContentView(Activity.java:2172)
    E/AndroidRuntime( 4390):    at com.myproject.MainNavigationDrawerFragmentActivity_.setContentView(MainNavigationDrawerFragmentActivity_.java:49)
    E/AndroidRuntime( 4390):    at com.myproject.MainNavigationDrawerFragmentActivity.onCreate(MainNavigationDrawerFragmentActivity.java:252)
    E/AndroidRuntime( 4390):    at com.myproject.MainNavigationDrawerFragmentActivity_.onCreate(MainNavigationDrawerFragmentActivity_.java:35)
    E/AndroidRuntime( 4390):    at android.app.Activity.performCreate(Activity.java:6251)
    E/AndroidRuntime( 4390):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
    E/AndroidRuntime( 4390):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
    E/AndroidRuntime( 4390):    ... 9 more
    
    3 回复  |  直到 5 年前
        1
  •  2
  •   Tidder    5 年前

    您的工具栏布局类型为 <layout> ,这是与数据绑定结合使用的特殊类型。它还需要有一个 <data> 绑定类的节。如果不打算使用数据绑定,请更改布局。

        2
  •  0
  •   Mahmoud Waked    5 年前

    我认为工具栏布局中的父布局有问题,请将其更改为 <FramLayout> 再试一次

    <layout> 用于数据绑定。它还需要有一个用于绑定类的节。如果你不打算使用数据绑定

    <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/toolBarConstraintLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
        <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolBar"
                android:layout_width="0dp"
                android:layout_height="56dp"
                android:background="?android:attr/selectableItemBackground"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:theme="@style/ThemeOverlay.AppCompat.Dark" />
    
        <TextView
                android:id="@+id/toolbaTitleTextView"
                style="@style/textViewOneLine"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:gravity="center"
                android:text="@string/application_name"
                app:textAllCaps="true"
                android:textColor="@android:color/white"
                android:textSize="13sp"
                android:textStyle="bold"
                app:layout_constraintBottom_toBottomOf="@+id/toolBar"
                app:layout_constraintEnd_toEndOf="@+id/toolBar"
                app:layout_constraintStart_toStartOf="@+id/toolBar"
                app:layout_constraintTop_toTopOf="@+id/toolBar" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    推荐文章