Я пытаюсь раздуть макет, содержащий 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)
код Kotlin в RecyclerViewAdapter,
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'
Я тоже почистил ребилд, все равно без изменений Любой совет будет принят во внимание!
Похоже на androidx проблему. Его перенесли в другое место. Попробуйте снова добавить карточку в XML, не указывая пакет, а затем разрешите автозаполнение пакета.
@EpicPandaForce Вы правы, androidx не выполнил автоматическую миграцию пакета xml cardview.
Вам нужно androidx.cardview.widget.CardView, а не android.support.v7.widget.CardView.
Студия Android не полностью перенесла мое приложение на androidx. Но после изменения имени пакета в макете xml проблема устранена.
Всем спасибо!
Когда я мигрировал на 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>
очевидно
android.support.v7.widget.CardViewне происходит отandroidx