【问题标题】:Error inflating class, line 34 is at setContentView膨胀类时出错,第 34 行位于 setContentView
【发布时间】:2018-02-12 11:46:23
【问题描述】:

我已经发布了整个区域,我不确定问题出在哪里

进程:com.dllibrary.cart,PID:17497

java.lang.RuntimeException:无法启动活动 组件信息{com.dllibrary.cart/com.dllibrary.cart.FoodDetail}: android.view.InflateException:二进制 XML 文件第 0 行:错误 膨胀类 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601) 在 android.app.ActivityThread.access$800(ActivityThread.java:178) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 在 android.os.Handler.dispatchMessage(Handler.java:111) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5637) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:android.view.InflateException:二进制 XML 文件第 0 行: 膨胀类错误 在 android.view.LayoutInflater.createView(LayoutInflater.java:633) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:504) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:414) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.dllibrary.cart.FoodDetail.onCreate(FoodDetail.java:34) 在 android.app.Activity.performCreate(Activity.java:6124) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601) 在 android.app.ActivityThread.access$800(ActivityThread.java:178) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 在 android.os.Handler.dispatchMessage(Handler.java:111) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5637) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Constructor.newInstance(Native Method) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:288) 在 android.view.LayoutInflater.createView(LayoutInflater.java:607) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:504) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:414) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.dllibrary.cart.FoodDetail.onCreate(FoodDetail.java:34) 在 android.app.Activity.performCreate(Activity.java:6124) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601) 在 android.app.ActivityThread.access$800(ActivityThread.java:178) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 在 android.os.Handler.dispatchMessage(Handler.java:111) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5637) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:java.lang.NullPointerException:尝试调用虚拟 方法'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' 空对象引用 在 android.graphics.drawable.LayerDrawable$ChildDrawable.(LayerDrawable.java:961) 在 android.graphics.drawable.LayerDrawable$LayerState.(LayerDrawable.java:1007) 在 android.graphics.drawable.RippleDrawable$RippleState.(RippleDrawable.java:923) 在 android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:914) 在 android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:94) 在 android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:912) 在 android.graphics.drawable.RippleDrawable.mutate(RippleDrawable.java:900) 在 android.view.View.applyBackgroundTint(View.java:16774) 在 android.view.View.setBackgroundDrawable(View.java:16643) 在 android.support.design.widget.FloatingActionButton.access$001(FloatingActionButton.java:68) 在 android.support.design.widget.FloatingActionButton$ShadowDelegateImpl.setBackgroundDrawable(FloatingActionButton.java:824) 在 android.support.design.widget.FloatingActionButtonLollipop.setBackgroundDrawable(FloatingActionButtonLollipop.java:73) 在 android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:179) 在 android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:151)

类的

xml 布局

      <?xml version="1.0" encoding="utf-8"?>
                    <android.support.design.widget.CoordinatorLayout                        xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.dllibrary.cart.FoodDetail">

    <android.support.design.widget.AppBarLayout
    android:id="@+id/App_Bar_Layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true"

    >

    <android.support.design.widget.CollapsingToolbarLayout
    android:id="@+id/CollapsingToolbar"
     android:layout_width="match_parent"
    android:layout_height="350dp"
    app:layout_scrollFlags="scroll|exitUntilCollapsed"
    app:expandedTitleTextAppearance="@android:color/transparent"
    app:contentScrim="#0e0d0e">

    <ImageView
    android:id="@+id/img_food"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="@null"
    android:scaleType="centerCrop"
    app:layout_collapseMode="parallax"
    />
   <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:title="Food Name"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_collapseMode="parallax"
    />


    <!--android:popupTheme="@style/ThemeOverlay.AppCompat.Light"-->




    </android.support.design.widget.CollapsingToolbarLayout>


    </android.support.design.widget.AppBarLayout>

    <android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/btnCart"
    android:src="@drawable/ic_shopping_cart_black_24dp"
    android:backgroundTint="@android:color/white"
    app:elevation="6dp"
    app:pressedTranslationZ="12dp"
    app:layout_anchor="@id/App_Bar_Layout"
    app:layout_anchorGravity="bottom|right|end"
    app:useCompatPadding="true"
    />
    <android.support.v4.widget.NestedScrollView
   android:id="@+id/nestedScrollView"
   android:clipToPadding="false"
   app:layout_behavior="@string/appbar_scrolling_view_behavior"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">
    <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="5dp"
    app:cardUseCompatPadding="true"
    >
    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <TextView
    android:layout_width="wrap_content"
    android:id="@+id/food_name"
    android:layout_marginTop="8dp"
    android:text="Food Name"
    android:textColor="@color/colorPrimary"
    android:textSize="20sp"
    android:textStyle="bold"
    android:padding="12dp"
    android:layout_height="wrap_content" />

    <LinearLayout
    android:id="@+id/Layout_Price"
    android:orientation="horizontal"
    android:layout_width="match_parent"
     android:layout_height="wrap_content">
     <ImageView
    android:src="@drawable/ic_attach_money_black_24dp"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content" />
    <TextView
    android:layout_width="0dp"
    android:layout_weight="9"
    android:id="@+id/food_price"
    android:text="1000"
    android:textColor="@color/colorPrimary"
    android:textSize="18sp"
    android:textStyle="bold"
    android:layout_height="wrap_content" />
   </LinearLayout>
   <com.cepheuen.elegantnumberbutton.view.ElegantNumberButton
    android:id="@+id/counter"
    android:layout_width="100dp"
    android:layout_height="30dp"
    android:layout_marginTop="8dp"
    android:layout_marginLeft="0dp"
    android:layout_marginBottom="18dp"
    app:textSize="8sp"
    app:backGroundColor="@color/colorAccent"
    app:initialNumber="1"
    app:finalNumber="20"
    >


  </com.cepheuen.elegantnumberbutton.view.ElegantNumberButton>

  </LinearLayout>


  </android.support.v7.widget.CardView>
  <android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="5dp"
    app:cardUseCompatPadding="true">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/food_description"
        android:layout_marginTop="12dp"
        android:lineSpacingMultiplier="1.5"
        android:text="Description"
        android:padding="12dp"
        android:textSize="14sp"
        android:textColor="@android:color/black"


        />


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



    </LinearLayout>


    </android.support.v4.widget.NestedScrollView>


    </android.support.design.widget.CoordinatorLayout>

Java 类。

package com.dllibrary.cart;

import android.support.design.widget.CollapsingToolbarLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton;
import com.dllibrary.cart.model.Food;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

public class FoodDetail extends AppCompatActivity {

TextView food_name, food_price, food_description;
Button btncart;
ImageView food_imagel;
CollapsingToolbarLayout collapsingToolbarLayout;
ElegantNumberButton numberButton;

String foodId="";
FirebaseDatabase database;
DatabaseReference foods;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_food_detail);

        database = FirebaseDatabase.getInstance();
        foods = database.getReference("Food");


        food_name = (TextView) findViewById(R.id.food_name);
        food_price = (TextView) findViewById(R.id.food_price);
        food_description = (TextView) findViewById(R.id.food_description);
        food_imagel = (ImageView) findViewById(R.id.img_food);
        numberButton = (ElegantNumberButton) findViewById(R.id.counter);
        btncart = (Button) findViewById(R.id.btnCart);


        collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.CollapsingToolbar);
        collapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar);
        collapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.CollapseAppBar);

        if (getIntent() != null)
                foodId = getIntent().getStringExtra("FoodId");
        if (!foodId.isEmpty()) {

                getDetailFood(foodId);
        }

}

private void getDetailFood(String foodId) {
        foods.child(foodId).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                                Food food= dataSnapshot.getValue(Food.class);
                                Picasso.with(getBaseContext()).load(food.getImage())
                                .into(food_imagel);
                                collapsingToolbarLayout.setTitle(food.getName());

                                food_price.setText(food.getPrice());

                                food_name.setText(food.getName());
                                food_description.setText(food.getDescription());


                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                });

}

}

【问题讨论】:

    标签: java android xml android-layout


    【解决方案1】:

    目标 SDK 版本是什么?也许你使用了错误的矢量 drawable 或其目标 SDK 爱好者而不是 5.1,当我为 4.x 版本编写代码并使用矢量时遇到这样的问题

    【讨论】:

    • 我正在使用 minSdkVersion 16 和 targetSdkVersion 27
    • 矢量绘图呢?在 16 中,您不能在按钮 textview 等上使用矢量可绘制对象,但在 compatimageview 中您可以
    • 我在浮动操作按钮中使用了图像资源,但仍然出现错误。
    • 浮动操作按钮分配给按钮?对于 btnCart 使用 FloatingActionButton
    • 这仍然不是解决方案,兄弟
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2017-02-28
    • 2021-07-10
    • 2020-08-01
    相关资源
    最近更新 更多