web-dev-qa-db-fra.com

Erreur de gonflage de la classe ImageView

Je reçois une erreur InflateException/ClassNotFoundException par intermittence. J'ai déjà vu des erreurs similaires dans SO, mais elles ont été causées par des fautes d'orthographe. J'ai correctement orthographié "ImageView", donc je ne sais pas ce qui cause l'erreur.

Le code où l'erreur se produit est:

v = View.inflate(getContext(), R.layout.event_show_row_layout, null);

Voici la mise en page XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"

    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical" >

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        Android:paddingLeft="10dip"
        Android:paddingRight="10dip" >

        <TextView
            Android:id="@+id/fromTextView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:textSize="12sp"
            Android:textStyle="italic" />

        <TextView
            Android:id="@+id/timeTextView"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:gravity="right"
            Android:textSize="12sp"
            Android:textStyle="italic" />
    </RelativeLayout>

    <RelativeLayout
        Android:id="@+id/layoutPostImage"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:padding="4dp" >

        <ImageView
            Android:id="@+id/postImageView"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentTop="true"
            Android:layout_margin="2dp"
            Android:adjustViewBounds="true"
            Android:background="@drawable/timeline_image_border"
            Android:contentDescription="@string/hello"
            Android:paddingBottom="6dp"
            Android:scaleType="fitXY"
            Android:src="@drawable/timeline_image_dummy" />
    </RelativeLayout>

    <RelativeLayout
        Android:id="@+id/wordsRelativeLayout"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" >

        <TextView
            Android:id="@+id/wordsTextView"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:gravity="center_vertical|center_horizontal"
            Android:paddingLeft="50dp"
            Android:paddingRight="50dp"
            Android:text="@string/hello" />

        <ImageView
            Android:id="@+id/topLeftQuoteImageView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentTop="true"
            Android:layout_marginLeft="10dp"
            Android:layout_marginTop="10dp"
            Android:adjustViewBounds="true"
            Android:contentDescription="@string/hello"
            Android:maxHeight="25dp"
            Android:maxWidth="25dp"
            Android:scaleType="fitXY"
            Android:src="@drawable/po_quotes_mobile1" />

        <ImageView
            Android:id="@+id/bottomRightQuoteImageView"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentBottom="true"
            Android:layout_alignParentRight="true"
            Android:layout_marginBottom="12dp"
            Android:layout_marginRight="12dp"
            Android:adjustViewBounds="true"
            Android:contentDescription="@string/hello"
            Android:maxHeight="25dp"
            Android:maxWidth="25dp"
            Android:scaleType="fitXY"
            Android:src="@drawable/po_quotes_mobile2" />
    </RelativeLayout>

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="5dp" >

        <Button
            Android:id="@+id/commentButton"
            Android:layout_width="84dp"
            Android:layout_height="24dp"
            Android:layout_alignParentLeft="true"
            Android:layout_marginLeft="5dp"
            Android:background="@drawable/es_comment_btn" />

        <Button
            Android:id="@+id/buttonLike"
            Android:layout_width="84dp"
            Android:layout_height="24dp"
            Android:layout_marginLeft="5dp"
            Android:layout_toRightOf="@id/commentButton"
            Android:background="@drawable/es_like_btn" />

        <Button
            Android:id="@+id/buttonNumberLike"
            Android:layout_width="wrap_content"
            Android:layout_height="24dp"
            Android:layout_gravity="center"
            Android:layout_marginLeft="5dp"
            Android:layout_toRightOf="@id/buttonLike"
            Android:background="@drawable/like_counter"
            Android:textColor="@Android:color/white"
            Android:textSize="12sp" />

        <Button
            Android:id="@+id/buttonDelete"
            Android:layout_width="38dp"
            Android:layout_height="24dp"
            Android:layout_alignParentRight="true"
            Android:layout_marginRight="5dp"
            Android:background="@drawable/es_more_btn" />
    </RelativeLayout>

    <TextView
        Android:id="@+id/commentsTextView"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="10dp"
        Android:layout_marginLeft="10dp"
        Android:layout_marginRight="10dp"
        Android:layout_marginTop="10dp"
        Android:background="#FFF9F8F1"
        Android:text="@string/hello"
        Android:textColor="@Android:color/black"
        Android:textSize="12sp" />

    <TextView
        Android:id="@+id/spacerTextView"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="10dp"
        Android:layout_marginRight="10dp"
        Android:layout_marginTop="10dp" />

</LinearLayout>

Voici le journal des erreurs:

E/AndroidRuntime(15849): FATAL EXCEPTION: main
E/AndroidRuntime(15849): Android.view.InflateException: Binary XML file line #36: Error inflating class ImageView
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.createViewFromTag(LayoutInflater.Java:454)
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.rInflate(LayoutInflater.Java:737)
E/AndroidRuntime(15849):    at  org.holoeverywhere.LayoutInflater.rInflate(LayoutInflater.Java:740)
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.inflate(LayoutInflater.Java:542)
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.inflate(LayoutInflater.Java:492)
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.inflate(LayoutInflater.Java:487)
E/AndroidRuntime(15849):    at Android.view.View.inflate(View.Java:8807)
E/AndroidRuntime(15849):    at com.mypackage.adapters.PostAdapter.getPostView(PostAdapter.Java:283)
E/AndroidRuntime(15849):    at com.mypackage.adapters.PostAdapter.getView(PostAdapter.Java:268)
E/AndroidRuntime(15849):    at Android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.Java:220)
E/AndroidRuntime(15849):    at Android.widget.AbsListView.obtainView(AbsListView.Java:1430)
E/AndroidRuntime(15849):    at Android.widget.ListView.makeAndAddView(ListView.Java:1745)
E/AndroidRuntime(15849):    at Android.widget.ListView.fillDown(ListView.Java:670)
E/AndroidRuntime(15849):    at Android.widget.ListView.fillFromTop(ListView.Java:727)
E/AndroidRuntime(15849):    at Android.widget.ListView.layoutChildren(ListView.Java:1598)
E/AndroidRuntime(15849):    at Android.widget.AbsListView.onLayout(AbsListView.Java:1260)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.FrameLayout.onLayout(FrameLayout.Java:338)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.setChildFrame(LinearLayout.Java:1254)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.layoutVertical(LinearLayout.Java:1130)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.onLayout(LinearLayout.Java:1047)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.RelativeLayout.onLayout(RelativeLayout.Java:912)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.FrameLayout.onLayout(FrameLayout.Java:338)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at net.simonvt.menudrawer.LeftDrawer.onLayout(LeftDrawer.Java:64)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.FrameLayout.onLayout(FrameLayout.Java:338)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.setChildFrame(LinearLayout.Java:1254)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.layoutVertical(LinearLayout.Java:1130)
E/AndroidRuntime(15849):    at Android.widget.LinearLayout.onLayout(LinearLayout.Java:1047)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.FrameLayout.onLayout(FrameLayout.Java:338)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.widget.FrameLayout.onLayout(FrameLayout.Java:338)
E/AndroidRuntime(15849):    at Android.view.View.layout(View.Java:7175)
E/AndroidRuntime(15849):    at Android.view.ViewRoot.performTraversals(ViewRoot.Java:1140)
E/AndroidRuntime(15849):    at Android.view.ViewRoot.handleMessage(ViewRoot.Java:1859)
E/AndroidRuntime(15849):    at Android.os.Handler.dispatchMessage(Handler.Java:99)
E/AndroidRuntime(15849):    at Android.os.Looper.loop(Looper.Java:130)
E/AndroidRuntime(15849):    at Android.app.ActivityThread.main(ActivityThread.Java:3683)
E/AndroidRuntime(15849):    at Java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15849):    at Java.lang.reflect.Method.invoke(Method.Java:507)
E/AndroidRuntime(15849):    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:839)
E/AndroidRuntime(15849):    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:597)
E/AndroidRuntime(15849):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(15849): Caused by: Java.lang.ClassNotFoundException: Could not find class: ImageView
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.onCreateView(LayoutInflater.Java:607)
E/AndroidRuntime(15849):    at org.holoeverywhere.LayoutInflater.createViewFromTag(LayoutInflater.Java:448)
E/AndroidRuntime(15849):    ... 48 more
9
dannyroa

J'ai eu le même problème. Mon problème est dû au fait que je viens d'utiliser des images (icônes) dans le dossier "drawable-v24". Je l'ai résolu en les copiant dans un dossier "drawable".

11

Je suis tombé sur le même problème récemment et j'ai pu le résoudre en utilisant app:srcCompat="@drawable/ic_black_image_24" 

La documentation de appcompat:srcCompat indique que - 

Il définit un dessin comme contenu de cette ImageView. Permet l'utilisation de vecteurs dessinables lors de l'exécution sur des versions antérieures de la plate-forme.

J'espère que cela aidera si quelqu'un tombe sur le même problème. 

4
hsm59

Pour moi, dans l'un de mes fichiers layout.xml, j'avais 

<ImageView
    Android:id="@+id/row_1_col_0"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:background="@string/default_picture_location">
</ImageView>

et à l'intérieur de strings.xml, j'avais 

<string name="default_picture_location">"@mipmap/tile"</string>

et donc il montrait cela dans Android Studio:

<ImageView
    Android:id="@+id/row_1_col_0"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:background="@mipmap/tile">
</ImageView>

Je pensais que tout fonctionnerait car il n'y avait pas d'erreur et l'application compilée et exécutée. Toutefois, une erreur d’exécution indiquant: "Android.view.InflateException: ligne de fichier XML binaire n ° 7: erreur lors du gonflage de la classe ImageView". 

Une fois que j'ai changé Android: fond de 

Android:background="@string/default_picture_location"

à 

Android:background="@mipmap/tile"

tout a fonctionné. 

4
Gene

essayer de changer 

v = View.inflate(getContext(), R.layout.event_show_row_layout, null);

à

v = View.inflate(getApplicationContext(), R.layout.event_show_row_layout, null);
4
Shani Goriwal

C'est une vieille question mais je viens de rencontrer le même problème. Dans mon cas, cela a été causé par l’utilisation de l’attribut Android:tint avec un selector plutôt qu’un color:

<ImageView
    ...
    Android:tint="@drawable/some_selector" />

Bien que cela fonctionne sans problème avec un SDK 21+, il se bloque dans les anciennes versions ...

Le passage à AppCompatImageView et à app:tint a résolu le problème:

<Android.support.v7.widget.AppCompatImageView
    ...
    app:tint="@drawable/some_selector" />
3
Andrei Herford

L’erreur lors de l’inflation peut provenir de drawable utilisé dans ImageView, dans ce cas:

Android:background="@drawable/timeline_image_border"
Android:src="@drawable/timeline_image_dummy"

Pour vous en débarrasser, remplacez toutes les images existantes en essayant un dessin différent.

2
nzala

J'ai les ressources dans les documents de catalogue drawable-zh-xxhdpi, mais pas dans le catalogue de ressources drawable-xxhdpi, l'apparition de cette erreur.

Cela devrait être:

res
  drawable-xxhdpi
     aa.png
  drawable-zh-xxhdpi
     aa.png
2
郑松岚

J'ai moi-même eu ce problème parce que mon image était dans le répertoire darawable-v24. Ainsi, lorsque je voulais utiliser une ancienne API, l'application se bloquait. Je suggère donc de vérifier si votre ressource est dans le bon répertoire ou non.

1
Hossein Karami

Dans mon cas, j'avais la même erreur, mais only lors de l'utilisation d'un périphérique avec une API <24 (émulateur ou périphérique physique).

Cela était dû à l'utilisation de "dégradé" dans un fichier SVG importé.

L'erreur n'apparaît pas dans le stacktrace, mais dans le fichier .xml du fichier SVG importé:

 enter image description here

Cela provoque le blocage de l'application lors du gonflage d'une vue ayant ce SVG comme source, pour les API <24.

Si vous souhaitez utiliser uniquement le format SVG, vous pouvez limiter l'utilisation de cette ressource aux API> = 24 et supprimer le dégradé des API ci-dessous.

1
Louis

Pour moi, je copie mon image dans le dossier drawable-v24 et le compilateur ne l’a pas trouvée

Changer la vue du studio Android en vue du projet 

 Project View

et coupez et collez votre image dans le dossier drawable 

1
Ali Khaki

vous n'avez pas fermé la balise LinearLayout

et s'il vous plaît utilisez le code suivant pour gonfler layout.xml

LayoutInflater inflater = getLayoutInflater();
final View v = inflater.inflate(R.layout.your_layout_id, null);
1
nanithehaddock

Mettre l’image en dessinable PAS comme "v-24" a fonctionné pour moi et j’ai arrêté d’obtenir le crash.

0
Haniya

Pour moi, cela fonctionne lorsque je colle une image à la fois dans drawable et drawable-v24 et que j'ai ajouté du code Android:src="@drawable/battman"

0
luqman ahmad