【问题标题】:Error inflating class android.support.v7.widget.CardView ClassNotFoundException错误膨胀类 android.support.v7.widget.CardView ClassNotFoundException
【发布时间】:2019-02-19 21:53:16
【问题描述】:

我正在尝试扩充包含 CardView 的布局,但我正在处理一些问题。

下面是错误状态,

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.hearthstonecards, PID: 14895
    android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class android.support.v7.widget.CardView
    Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class android.support.v7.widget.CardView
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.CardView" on path: DexPathList[[zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/base.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_resources_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.example.hearthstonecards-Kl_z5hCNi7YCycFhods3Tg==/lib/arm64, /system/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:606)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at com.example.hearthstonecards.adapter.RecyclerViewAdapter.onCreateViewHolder(RecyclerViewAdapter.kt:34)
        at com.example.hearthstonecards.adapter.RecyclerViewAdapter.onCreateViewHolder(RecyclerViewAdapter.kt:15)
        at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6942)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6114)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5997)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5993)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2227)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1558)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:613)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4029)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3746)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4299)
        at android.view.View.layout(View.java:20672)
        at android.view.ViewGroup.layout(ViewGroup.java:6194)

RecyclerViewAdapter 中的 Kotlin 代码,

class RecyclerViewAdapter(private val recyclerViewItems: ArrayList<HearthstoneCardItemData>, context: Context) :
    RecyclerView.Adapter<RecyclerViewHolder>() {

    private val inflater = LayoutInflater.from(context)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder {
        val view = inflater.inflate(R.layout.recycler_view_card_item, parent, false)
        return RecyclerViewHolder(view)
    }
}

下面是xml布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:card_view="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">
    <android.support.v7.widget.CardView
            android:id="@+id/cardView"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            card_view:cardCornerRadius="0dp"
            card_view:cardElevation="@dimen/margin10"
            card_view:cardMaxElevation="@dimen/margin10"
            card_view:contentPadding="@dimen/margin10">
        <RelativeLayout
                android:id="@+id/relativeLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:layout_gravity="center">
            <ImageView
                    android:id="@+id/iv_card_item"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:tint="@android:color/white"
                    android:padding="5dp"/>
        </RelativeLayout>

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

</LinearLayout>

我还在 gradle 文件中添加了正确的依赖项(我认为)

implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha02'
implementation 'androidx.cardview:cardview:1.0.0'

我也清理了重新构建,仍然没有变化 任何建议将不胜感激!

【问题讨论】:

  • 显然android.support.v7.widget.CardView 不是来自androidx
  • 听起来像androidx 问题。它被搬到了别处。尝试在不指定包的情况下再次将 cardview 添加到 XML,然后让它自动完成包。
  • @EpicPandaForce 你说得对,androidx 没有自动迁移 xml cardview 包。

标签: android android-layout android-activity kotlin android-cardview


【解决方案1】:

你需要androidx.cardview.widget.CardView 而不是android.support.v7.widget.CardView

【讨论】:

    【解决方案2】:

    当我迁移到 androidx 时,我的 Android Studio 没有完全迁移。所以重点是,如果您要迁移到 androidx,请确保将 CardView 依赖项添加到您的 build.gradle

    build.gradle

    dependencies {
        // Other dependencies ...
        implementation 'androidx.cardview:cardview:1.0.0'
    }
    

    在你的layoutxml

    <androidx.cardview.widget.CardView
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="200dp"
        android:layout_height="200dp"
        card_view:cardCornerRadius="4dp">
    
        <TextView
            android:id="@+id/info_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Text"/>
    </androidx.cardview.widget.CardView>
    

    【讨论】:

      【解决方案3】:

      Android Studio 没有将我的应用完全迁移到 androidx。但是在 xml 布局中更改包名称后解决了这个问题。

      谢谢大家!

      【讨论】:

        猜你喜欢
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        相关资源
        最近更新 更多