web-dev-qa-db-ja.com

InflateException:バイナリXMLファイルの行#8:クラスImageViewの膨張エラー

SOに同じことを尋ねる他の質問があることを知っています。私はすでにそれらのほとんどを見てきました。

ほとんどの回答では、メモリエラーについて説明しています。小さいアイコン(24x24ピクセル)だけを読み込むImageViewがこのようなものをどのように作成できるかわかりません。

しかし、ここにスタックトレースを投稿したいのですが、他の誰かが私ができないことを特定して助けてくれるかもしれません。

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)

レイアウトファイル

<?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>

編集2:私のアダプタークラスのコード。

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;
    }

}
19
Mes

スタックトレースには表示されませんが、インフレーション中のエラーは、この場合のImageViewで使用されるdrawableに起因する可能性があります。

Android:src="@drawable/ic_dot"

OPは、「今は大丈夫だと思われます...」という別のドロウアブルを試して、この予想をテストしました。

22

バイナリxmlファイルの行#0:クラスimageviewの膨張エラー

あなたの画像がモバイルOSレベルよりも高いかもしれないdrawable-v23またはv24になっているかどうかを確認する必要があります。プロジェクトで描画可能なバージョンの画像を作成しないようにしてください

描画可能なフォルダ内の例〜> "ic_contact(v24)"

41
Aashay karekar

ベクターのドロアブルを使用している場合は、

app:srcCompat="@drawable/ic_dot"

の代わりに

Android:src="@drawable/ic_dot"
12
pedroca

同じ問題がありました。 imageViewのpng画像により、クラスinflateExceptionが発生していました。これはAndroid 6.0.1を実行している携帯電話でのみ発生しましたが、Android 7.0を実行している携帯電話では発生しません。これを解決するには:

--- In Android Studio ---

  • Drawableフォルダーからpng画像を削除しました(Drawable-v24ではなく、Drawableフォルダーのみが表示されています)。
  • Pngをドロアブルフォルダーにコピーして戻します。これを行うと、drawableまたはdrawable-v24フォルダーのいずれかにコピーすることを選択できます。 PNGを両方のフォルダーにコピー
  • Pngを両方のフォルダーにコピーします(pngは同じ名前でなければなりません)。
  • Pngを両方のフォルダーにコピーすると、pngの名前を持つ新しいフォルダーが表示されます。その中に2つのpngが表示されます。隣に「(v24)」が付いているもの。 PNGを含む、PNGの名前の新しいフォルダが表示されます
5
Andico

つかいます

app:srcCompat="@drawable/ic_dot" 

じゃない

Android:src="@drawable/ic_dot" 
2
felhi

Android studioで画像をdrawableに貼り付けないでください。それをdrawableフォルダーに貼り付けてプロジェクトをきれいにしてから実行すると動作します。

1
soorya

私の場合、app:srcCompat="@drawable/ic_svg_image"内部ImageViewですが、非常に複雑なSVGでした。 Designタブに表示されましたが、アプリケーションがクラッシュしました。

PNGに変更しました。

1
CoolMind

私もこの種の問題に直面しています。解決する最も簡単な方法

Drawable 24ではなく、drawableディレクトリにdrawableファイルを置くだけです。

1

次のコードがAndroid Manifests-Activityに追加される可能性があります

<activity
Android:name=""
--------------
Android:theme="@Android:style/Theme.Black.NoTitleBar">
</activity>

追加した場合は、このテーマを削除してください。

このテーマを削除すると、私の問題は解決しました。久しぶりにこれらの解決策を得ました。

0
Nitin Karale

Android.support.v7.widget.AppCompatImageViewなしでAndroid:backgroundを使用すると、問題が解決しました。

0
Omid Ziyaee
Android:src="@raw/ic_image"

rawという新しいディレクトリに画像ファイルを追加し、問題を解決しました。

0