Reputation: 1691
I know there are other questions on SO asking the same thing. I have already looked at most of them.
Most answers call about memory errors. I can't see how an ImageView
which loads just a small icon (24x24 pixels) can make something like this.
But I'd like to post the stacktrace here maybe someone else can identify something I can't and help me.
06-03 22:14:17.367 28590-28590/css.mvp.example.debug W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41e4ad40)
06-03 22:14:17.409 28590-28590/css.mvp.example.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: css.mvp.example.debug, PID: 28590 android.view.InflateException: Binary XML file line #8: Error inflating class ImageView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at css.mvp.example.main.projects.fragments.adapters.PollAnswersAdapter.getView(PollAnswersAdapter.java:38)
at android.widget.AbsListView.obtainView(AbsListView.java:2255)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
at android.widget.ListView.onMeasure(ListView.java:1175)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:735)
at android.view.View.measure(View.java:16540)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16540)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16540)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5137)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
at android.view.View.measure(View.java:16540)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1942)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1132)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1321)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1019)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5725)
Layout file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"
android:weightSum="11"
android:paddingTop="16dp" android:paddingBottom="16dp"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_answer_circle"
android:src="@drawable/ic_dot"
android:layout_gravity="center" android:layout_weight="2"
android:layout_marginLeft="16dp" android:layout_marginRight="16dp"
android:layout_width="0dp" android:layout_height="wrap_content" />
<TextView android:id="@+id/tv_poll_answer"
android:layout_weight="6"
android:layout_width="0dp" android:layout_height="wrap_content" />
<TextView android:id="@+id/tv_poll_answer_num"
android:layout_weight="1"
android:layout_marginLeft="16dp" android:layout_marginRight="8dp"
android:layout_width="0dp" android:layout_height="wrap_content" />
<TextView android:id="@+id/tv_poll_answer_percent"
android:layout_weight="2"
android:layout_marginRight="16dp"
android:layout_width="0dp" android:layout_height="wrap_content" />
</LinearLayout>
EDIT 2 : the code of my Adapter class.
public class PollAnswersAdapter extends ArrayAdapter<PollAnswerItem> {
private Context context;
private ArrayList<PollAnswerItem> data;
public PollAnswersAdapter(Context context, ArrayList<PollAnswerItem> data) {
super(context, -1, data);
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_answer, parent, false);
ImageView ivCircle = (ImageView) rowView.findViewById(R.id.iv_answer_circle);
TextView tvAnswer = (TextView) rowView.findViewById(R.id.tv_poll_answer);
TextView tvNums = (TextView) rowView.findViewById(R.id.tv_poll_answer_num);
TextView tvPercent = (TextView) rowView.findViewById(R.id.tv_poll_answer_percent);
tvAnswer.setText(data.get(position).getAnswer());
tvNums.setText(data.get(position).getNum());
tvPercent.setText(data.get(position).getPercent() + "%");
tvPercent.setTextColor(ColorTemplate.PREDEFINED_COLORS[position]);
return rowView;
}
}
Upvotes: 42
Views: 96723
Reputation: 530
For me, all the drawables were pasted within the \res\drawable folder instead of the drawable-v24 folder. In spite of this, I was experiencing crashes.
The way I fixed this, was to use an androidx.appcompat.widget.AppCompatImageView
instead of a regular ImageView
.
Next, I changed the android:src
to app:srcCompat
.
The app stopped crashing hereon.
Upvotes: 1
Reputation: 1
When you see "Error inflating" with imageview, give it a try to change that ImageView's src file from drawable(24) to simple drawable folder and likewise other files too if there's any. It is because of you API version is bigger then the android version to which you are installing you app.
Upvotes: 0
Reputation: 127
Well in my case it was crashing in only release builds because of proguard, so after i have added this line:
-keep class android.support.v7.widget.** { *; }
in file proguard-rules.pro, the crash has been resolved.
Upvotes: 0
Reputation: 201
Delete the png image from the drawable (24) v folder and put the image in drawable folder visible, not the drawable-v24).
Upvotes: 0
Reputation: 711
This issue is usually caused when you copy drawables files to drawable-24 folder instead of drawable folder. So, copy all images from drawable-24 folder to drawable.
Upvotes: 5
Reputation: 363
I was suffering from the same problem today,
found the solution!
Now whenever you add image file make sure you convert it into xxhdpi
by this your app will run on every device!
Upvotes: 2
Reputation: 535
I also use to face this error most often. The reason behind why this error comes is,
1) In ImageView
we have used wrong format of image, or an image when we designed and saved it didn't get save properly. it's extension got broken somehow.
2) One another reason of this error is we have used an xml with drawable. For example, android:src="@drawable/ic_left"
, here
ic_left
is an xml file in drawable that we are using.
So, to avoid this kind of error, always use .png format image with ImageView. In my case the error was,
java.lang.RuntimeException: Unable to start activity ComponentInfo{package name of project/ActivtyName}: android.view.InflateException: Binary XML file line #255: Binary XML file line #255: Error inflating class ImageView
Upvotes: 1
Reputation: 3232
What helped me is just copying the image file (.png in my case)
from res\drawable-v24
to \res\drawable directory.
Will happy if this post will save time to somebody else.
Upvotes: 15
Reputation: 1019
android:src="@raw/ic_image"
I added the image file to new directory called raw and it solved my problem.
Upvotes: 1
Reputation: 51
I also face this kind of problem . the simplest way to solve
Just Put your drawable files in drawable directory, not drawable 24.
Upvotes: 5
Reputation: 428
using android.support.v7.widget.AppCompatImageView
without android:background
solved the problem for me.
Upvotes: 3
Reputation: 189
Don't paste your image into drawable in Android studio, paste it into the drawable folder and clean the project and then run it will work.
Upvotes: 1
Reputation: 28845
In my case I had app:srcCompat="@drawable/ic_svg_image"
inside ImageView
, but it was very complex SVG. Though it showed in Design
tab, an application crashed.
I changed it to PNG.
Upvotes: 1
Reputation: 81
I had the same problem. The png image for my imageView was causing a class inflateException. This was only happening with my phone running android 6.0.1, but not in my phone running android 7.0. To solve this:
---In Android Studio---
Upvotes: 8
Reputation: 799
The following code might be added in Android Manifests-Activity
<activity
android:name=""
--------------
android:theme="@android:style/Theme.Black.NoTitleBar">
</activity>
please remove this theme if you have added.
My problem has been solved after removing this theme. I got these solution after long time.
Upvotes: 1
Reputation: 960
binary xml file line #0: error inflating class imageview
you have to see if your image has become drawable-v23 or v24 which might be higher than your mobile os level, Make sure to avoid creating drawable version image in project
example In drawable folder ~> "ic_contact(v24)"
Upvotes: 72
Reputation: 1768
If you are using vector drawables, use
app:srcCompat="@drawable/ic_dot"
instead of
android:src="@drawable/ic_dot"
Upvotes: 31
Reputation: 11074
The stack trace doesn't show it, but the error during inflation might come from drawable used in the ImageView
, in this case:
android:src="@drawable/ic_dot"
OP tested this hunch, by trying a different drawable which "seems ok right now...".
Upvotes: 40