膨胀类com.google.android.material.tabs.TabLayout时出错

时间:2018-07-06 07:02:48

标签: android android-tablayout

我正在尝试实现“标签布局”,但不幸的是出现此错误,

我添加了我的xml代码,任何人都可以帮忙弄清楚我在做什么错误。

以下是我得到的错误日志

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vvdntech.design_material/com.example.vvdntech.design_material.LoggedIn}: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
 Caused by: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.example.vvdntech.design_material.LoggedIn.onCreate(LoggedIn.java:17)
    at android.app.Activity.performCreate(Activity.java:6582)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2532)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:5776) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
 Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
    at com.example.vvdntech.design_material.LoggedIn.onCreate(LoggedIn.java:17) 
    at android.app.Activity.performCreate(Activity.java:6582) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.material.tabs.TabLayout" on path: DexPathList[[zip file "/data/app/com.example.vvdntech.design_material-1/base.apk", zip file "/data/app/com.example.vvdntech.design_material-1/split_lib_dependencies_apk.apk", 

这是我拥有的xml文件

<RelativeLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoggedIn">


    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pager">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab1" />
            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab2"/>
            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab3"/>

        </com.google.android.material.tabs.TabLayout>

    </android.support.v4.view.ViewPager>

</RelativeLayout>

主要活动我尚未添加任何内容。这完全是实践,因此,如果代码中有任何小错误,请务必告知。

编辑:我还附加了我的gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.vvdntech.design_material"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0-alpha3'
}

https://material.io/develop/android/components/tab-layout/我正在使用此链接,其中选项卡位于视图寻呼机内。

提前thnx

8 个答案:

答案 0 :(得分:4)

它可能正在寻找当前应用程序主题中不存在的值。因此,请确保您的应用主题以Theme.MaterialComponents开头,而不是Theme.AppCompat

答案 1 :(得分:3)

错误的根源是com.google.android.material.tabs.TabLayout不是来自支持库,而是来自@Doflaminhgo指出的材料设计库。

dependencies {
    // ...
    implementation 'com.google.android.material:material:1.0.0-beta01'
    // ...
}

引用https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

我不确定为什么Android reference documentation描述了Material Components的使用而没有在本节的任何地方明显提及在何处找到它。

答案 2 :(得分:2)

这有点晚了,但是对于任何可能在未来研究这个问题的人:

您需要使用的软件包是不是com.google.android.material.tabs (尽管它是材料设计网站中使用的软件包),但它是 android.support .design.widget (TabLayout和TabItem都适用)。这是一个示例用法:

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="Active"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="History"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="Ignored"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>

    </android.support.design.widget.TabLayout>

答案 3 :(得分:0)

可能您的xml文件版本受到限制...

enter image description here

另请参阅此Link

答案 4 :(得分:0)

在gradle文件中浏览支持库,所有支持库必须具有相同的版本,可能是混合版本。

答案 5 :(得分:0)

herehere所指出,您的应用应使用继承eContainer()主题的主题,或者应具有所需的属性。

答案 6 :(得分:0)

在我的activity_main上,它只说了布局,但我改成了com.google.android.material.tabs.TabLayout,问题已解决

答案 7 :(得分:0)

我用 Tablayout(lib Masterial) 也有同样的问题,解决方法如下

添加 style.xml

<style name="ThemeCustom.TabLayout" parent="Theme.MaterialComponents.Light"/>

布局.xml

<com.google.android.material.tabs.TabLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeCustom.TabLayout">

</com.google.android.material.tabs.TabLayout>

它解决了我的问题。希望以后能帮到其他人。