android.view.InflateException:输出类android.support.v7.widget.CardView时出错

时间:2015-08-02 09:16:09

标签: android android-studio android-support-library android-cardview

我知道这个问题被问过几次,但它们都与eclipse有关,而我正在使用Android Studio,因此这些答案对我没有帮助。我正在尝试将CardView包含在我的一个片段中以获取回收站视图项目。下面的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:padding="8dp" >

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardUseCompatPadding="true"
        card_view:cardElevation="4dp"
        android:foreground="?attr/selectableItemBackground"
        android:clickable="true"
        android:id="@+id/cv" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp" >

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:textStyle="bold"
                android:textColor="@color/mainBodyText"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true" />

            <TextView
                android:id="@+id/text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/title"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginTop="5dp"
                android:textColor="@color/mainBodyText"
                android:textSize="16sp"
                android:textStyle="italic"/>

        </RelativeLayout>

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

</LinearLayout>

以下模块build.gradle的{​​{1}}文件:

app

在跑步时,我得到以下异常:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.myapp.myapp"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
}

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:4)

经过几天的努力,我解决了这个问题。无论如何,这是非常简单的解决方案这里的要点是,当膨胀视图时,我需要使用视图的父级上下文。早些时候我正在使用应用程序的上下文。新代码如下所示:

<xsl:template match="element">
    <xsl:copy>
        <xsl:value-of select="translate(., ' ', '&#160;')" />
    </xsl:copy>
</xsl:template>

之前是:

@Override
public SearchItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new SearchItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.search_item, parent, false));
}

@Override public SearchItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new SearchItemViewHolder(LayoutInflater.from(context).inflate(R.layout.search_item, parent, false)); } 从活动传递的位置,使用context获得。