android.view.InflateException:二进制XML文件行#2:二进制XML文件行#2:错误膨胀类android.support.v7.widget.CardView

问题描述 投票:0回答:1

我在最后4-5天遇到了这个问题。我是新手中的kotlin编程,所以我对它一无所知。在运行我的应用程序时,我在Cardview中收到此错误错误是:

 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.alferdize.pythoniz, PID: 27369
    android.view.InflateException: Binary XML file line #2: Binary XML 
        file line #2: Error inflating class android.support.v7.widget.CardView
            at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
            at com.alferdize.pythoniz.FoodAdapter.onCreateViewHolder(FoodAdapter.kt:13)
            at com.alferdize.pythoniz.FoodAdapter.onCreateViewHolder(FoodAdapter.kt:11)
            at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6794)
            at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5975)
            at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
            at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
            at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
            at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
            at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
            at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
            at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
            at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
            at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2001)
            at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1990)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1755)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2001)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1844)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1753)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
            at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2755)
            at android.view.View.layout(View.java:16975)
            at android.view.ViewGroup.layout(ViewGroup.java:5579)
            at 
    android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2552)
            at 
 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2255)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1321)
            at 
 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6737)
            at 
 android.view.Choreographer$CallbackRecord.run(Choreographer.java:894)
            at android.view.Choreographer.doCallbacks(Choreographer.java:696)
            at android.view.Choreographer.doFrame(Choreographer.java:631)
            at 
 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:880)
            at android.os.Handler.handleCallback(Handler.java:815)
            at android.os.Handler.dispatchMessage(Handler.java:104)
            at android.os.Looper.loop(Looper.java:207)
            at android.app.ActivityThread.main(ActivityThread.java:5776)
            at java.lang.reflect.Method.invoke(Nativ
    I/Process: Sending signal. PID: 27369 SIG: 9
    Application terminated.

FirstScreen.kt

package com.alferdize.pythoniz
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_first.*

class FirstScreen : AppCompatActivity(){
    @SuppressLint("WrongConstant")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_first)

        val layoutManager = LinearLayoutManager(this)
        layoutManager.orientation = LinearLayoutManager.VERTICAL
        recyclerView.layoutManager = layoutManager
        val adapter = FoodAdapter(this, Supplier.food)
        recyclerView.adapter = adapter
    }
}

list_view.xml文件:

<?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView
      xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
          xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            card_view:cardCornerRadius="5dp">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@android:color/white"
                android:baselineAligned="false"
                android:orientation="horizontal"
                android:padding="5dp">

            <TextView
                    android:id="@+id/txvTitle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:text="@string/title"
                    android:textColor="#616161"
                    android:textSize="18sp"
                    android:textStyle="bold" 
                    tools:ignore="HardcodedText"/>

            <ImageView
                    android:id="@+id/imgShare"
                    android:layout_width="30dp"
                    android:layout_height="match_parent"
                    android:layout_gravity="center"
                    android:src="@android:drawable/ic_menu_share"                    android:tint="#eeeeee"android:contentDescription="@string/todo" tools:ignore="ContentDescription"/>

        </LinearLayout>

    </android.support.v7.widget.CardView>

FoodAdapter.kt

package com.alferdize.pythoniz

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.alferdize.pythoniz.Supplier.food
import kotlinx.android.synthetic.main.list_item.view.*

class FoodAdapter(val context: Context,val food: List<Food>) : RecyclerView.Adapter<FoodAdapter.MyViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false)
        return MyViewHolder(view)
    }

    override fun getItemCount(): Int {
        return food.size
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val foody = food[position]
        holder.setData(foody, position)
    }

    inner class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        fun setData(foody: Food?, position: Int){
            itemView.txvTitle.text = foody!!.title
        }

    }
}

应用程序/的build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.alferdize.pythoniz"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++14"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.core:core-ktx:1.1.0-alpha03'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0-rc02'

}

activity_first.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
                                                   android:layout_width="match_parent"
                                                   android:layout_height="match_parent">
    <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    </androidx.recyclerview.widget.RecyclerView>


</LinearLayout>
android kotlin android-cardview
1个回答
3
投票

你使用androidX

改变这个

<android.support.v7.widget.CardView
      xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

      <!--other codes-->

</android.support.v7.widget.CardView>

对此

<androidx.cardview.widget.CardView
         xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:card_view="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

       <!--other codes-->

 </androidx.cardview.widget.CardView>
© www.soinside.com 2019 - 2024. All rights reserved.