【问题标题】:android.view.InflateException: Binary XML file line #87: Error inflating class TextViewandroid.view.InflateException: Binary XML file line #87: Error inflating class TextView
【发布时间】:2016-10-08 01:59:51
【问题描述】:

我正在尝试在 Android Studio 中创建一个应用程序,该应用程序根据从一组 4 个搜索栏(每个 RGBA 值一个)收集的 RGBA 值更改框的颜色。

目前我已将其设置为每个搜索栏的数值实时显示在栏下方。

除了下面的文本之外,我还没有到达将条形连接到其他任何内容的部分。它就像一个魅力,直到我去添加一个 ImageButton 到组合中(通过设计视图),突然之间我不断收到以下错误:

06-08 00:24:59.004 1581-1581/edu.ggc.tkeating.grizzlycolorsapptkeating E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.ggc.tkeating.grizzlycolorsapptkeating/edu.ggc.tkeating.grizzlycolorsapptkeating.MainActivity}: android.view.InflateException: Binary XML file line #87: Error inflating class TextView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.view.InflateException: Binary XML file line #87: Error inflating class TextView
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:736)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at edu.ggc.tkeating.grizzlycolorsapptkeating.MainActivity.onCreate(MainActivity.java:22)
        at android.app.Activity.performCreate(Activity.java:5104)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
        at android.app.ActivityThread.access$600(ActivityThread.java:141) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5041) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
        at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.content.res.Resources$NotFoundException: File res/color/abc_search_url_text.xml from drawable resource ID #0x7f0b004e
        at android.content.res.Resources.loadDrawable(Resources.java:1953)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
        at android.view.View.<init>(View.java:3330)
        at android.widget.TextView.<init>(TextView.java:583)
        at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:60)
        at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:56)
        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)
        at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980)
        at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039)
        at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at edu.ggc.tkeating.grizzlycolorsapptkeating.MainActivity.onCreate(MainActivity.java:22) 
        at android.app.Activity.performCreate(Activity.java:5104) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
        at android.app.ActivityThread.access$600(ActivityThread.java:141) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5041) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
        at dalvik.system.NativeStart.main(Native Method) 
    Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #18: <item> tag requires a 'drawable' attribute or child tag defining a drawable
        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:178)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:885)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822)
        at android.content.res.Resources.loadDrawable(Resources.java:1950)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
        at android.view.View.<init>(View.java:3330) 
        at android.widget.TextView.<init>(TextView.java:583) 
        at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:60) 
        at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:56) 
        at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 
        at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980) 
        at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039) 
        at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at edu.ggc.tkeating.grizzlycolorsapptkeating.MainActivity.onCreate(MainActivity.java:22) 
        at android.app.Activity.performCreate(Activity.java:5104) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
        at android.app.ActivityThread.access$600(ActivityThread.java:141) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5041) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
        at dalvik.system.NativeStart.main(Native Method) 

现在我到处寻找解决方案,并在 StackOverflow 和其他一些网站上发现了几个类似的问题,但似乎没有任何效果。我不确定我的代码是否太庞大或什么。我检查了 android.view.InflateException: Binary XML file line #87" Error 中引用的 XML 文件,但那是在一个我什至没有接触过的自动生成的类中

这是在我的 content_main.xml 文件中给我带来麻烦的 TextView

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="Small Text"
    android:id="@+id/textViewAlphaProg"
    android:layout_below="@+id/seekBarAlpha"
    android:layout_centerHorizontal="true"
    android:background="@color/abc_search_url_text"/>

这是我相当冗长的 MainActivity.java

    package edu.ggc.tkeating.grizzlycolorsapptkeating;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.widget.SeekBar;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {
        private static SeekBar seek_bar_red;
        private static SeekBar seek_bar_blue;
        private static TextView text_view_red;
        private static TextView text_view_blue;
        private static SeekBar seek_bar_green;
        private static TextView text_view_green;
        private static SeekBar seek_bar_alpha;
        private static TextView text_view_alpha;

         @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //start seekbar methods
            seekbarred();
            seekbarblue();
            seekbargreen();
            seekbaralpha();
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
        }

        public void seekbarred() {
            //Red Value
            seek_bar_red = (SeekBar) findViewById(R.id.seekBarRed);
            text_view_red = (TextView) findViewById(R.id.textViewRedProg);
            text_view_red.setText("Red Value : " + seek_bar_red.getProgress() + " of " + seek_bar_red.getMax());

        seek_bar_red.setOnSeekBarChangeListener(

                new SeekBar.OnSeekBarChangeListener() {
                    int progress_value_red;

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        progress_value_red = progress;
                        text_view_red.setText("Red Value : " + progress + " of " + seek_bar_red
                                .getMax
                                        ());
                        //Toast.makeText(MainActivity.this, "SeekBar in Progress", Toast
                        //.LENGTH_LONG).show();
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        /*Toast.makeText(MainActivity.this, "SeekBar in StartTracking", Toast
                                .LENGTH_LONG).show();*/

                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        /*text_view.setText("Value : " + progress_value + " of " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in StopTracking", Toast
                                .LENGTH_LONG).show();*/

                    }
                }
        );
    }

    public void seekbarblue() {
        //blue Value
        seek_bar_blue = (SeekBar) findViewById(R.id.seekBarBlue);
        text_view_blue = (TextView) findViewById(R.id.textViewBlueProg);
        text_view_blue.setText("Blue Value : " + seek_bar_blue.getProgress() + " of " +
                seek_bar_blue
                        .getMax());


        seek_bar_blue.setOnSeekBarChangeListener(

                new SeekBar.OnSeekBarChangeListener() {
                    int progress_value_blue;

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        progress_value_blue = progress;
                        text_view_blue.setText("Blue Value : " + progress + " of " + seek_bar_blue
                                .getMax
                                        ());
                        //Toast.makeText(MainActivity.this, "SeekBar in Progress", Toast
                        //.LENGTH_LONG).show();
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        /*Toast.makeText(MainActivity.this, "SeekBar in StartTracking", Toast
                                .LENGTH_LONG).show();*/

                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        /*text_view.setText("Value : " + progress_value + " of " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in StopTracking", Toast
                                .LENGTH_LONG).show();*/

                    }
                }
        );
    }

    public void seekbargreen() {
        //Green Value
        seek_bar_green = (SeekBar) findViewById(R.id.seekBarGreen);
        text_view_green = (TextView) findViewById(R.id.textViewGreenProg);
        text_view_green.setText("Green Value : " + seek_bar_green.getProgress() + " of " +
                seek_bar_green.getMax());

        seek_bar_green.setOnSeekBarChangeListener(
                new SeekBar.OnSeekBarChangeListener() {
                    int progress_value_green;

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        progress_value_green = progress;
                        text_view_green.setText("Green Value : " + progress + " of " +
                                seek_bar_green.getMax());
                        //Toast.makeText(MainActivity.this, "SeekBar in Progress", Toast
                        //.LENGTH_LONG).show();
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        /*Toast.makeText(MainActivity.this, "SeekBar in StartTracking", Toast
                                .LENGTH_LONG).show();*/
                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        /*text_view.setText("Value : " + progress_value + " of " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in StopTracking", Toast
                                .LENGTH_LONG).show();*/
                    }
                }
        );
    }


    public void seekbaralpha() {
        //Alpha Value
        seek_bar_alpha = (SeekBar) findViewById(R.id.seekBarAlpha);
        text_view_alpha = (TextView) findViewById(R.id.textViewAlphaProg);
        text_view_alpha.setText("Alpha Value : " + seek_bar_alpha.getProgress() + " of " +
                seek_bar_alpha.getMax());

        seek_bar_alpha.setOnSeekBarChangeListener(

                new SeekBar.OnSeekBarChangeListener() {
                    int progress_value_alpha;

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        progress_value_alpha = progress;
                        text_view_alpha.setText("Alpha Value : " + progress + " of " +
                                seek_bar_alpha.getMax());
                        //Toast.makeText(MainActivity.this, "SeekBar in Progress", Toast
                        //.LENGTH_LONG).show();
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        /*Toast.makeText(MainActivity.this, "SeekBar in StartTracking", Toast
                                .LENGTH_LONG).show();*/

                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        /*text_view.setText("Value : " + progress_value + " of " + seek_bar.getMax());
                        Toast.makeText(MainActivity.this, "SeekBar in StopTracking", Toast
                                .LENGTH_LONG).show();*/

                    }
                }
        );
    }
}

因此,如果有人知道我该如何解决这个问题,以便它可以再次运行,我可以继续编写代码,那将是非常棒的。如果有人对执行搜索栏功能的更简单方法有任何建议,那也很好。

【问题讨论】:

    标签: java android xml android-studio


    【解决方案1】:

    如果你查看你的日志,你可以看到

    android.content.res.Resources$NotFoundException: 来自可绘制资源 ID #0x7f0b004e 的文件 res/color/abc_search_url_text.xml

    表示找不到color/abc_search_url_text

    【讨论】:

    • 我注意到了,但它位于自动生成的文件“R.java”中,所以我不太确定如何让它与 R.java 通信。尤其是看到我在整个应用程序中经常使用 R 并且工作得很好。
    • &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&gt; &lt;color name="colorPrimary"&gt;#3F51B5&lt;/color&gt; &lt;color name="colorPrimaryDark"&gt;#303F9F&lt;/color&gt; &lt;color name="colorAccent"&gt;#FF4081&lt;/color&gt; &lt;/resources&gt; 这就是 colors.xml 中的全部内容
    • 看到你缺少 abc_search_url_text 这就是抛出错误的原因
    【解决方案2】:

    检查一下。

    android:background="@color/abc_search_url_text"
    

    查看你的日志

    dalvik.system.NativeStart.main(Native Method)  Caused by: android.content.res.Resources$NotFoundException: File res/color/abc_search_url_text.xml from drawable resource ID #0x7f0b004e at 
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,原因是 Sony mobile 的实施不当。

      尝试添加:

      android:hardwareAccelerated="true"
      

      到您的清单文件,或简单地设置 minSdkVersion=14+。

      我遇到的问题与硬件加速有关,显示给我的最后一个错误看起来就像您现在看到的那样。

      关于这个问题的长篇故事,请参阅this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-03
        • 2020-06-27
        • 1970-01-01
        • 2015-08-21
        • 2012-02-09
        • 2012-03-04
        • 2013-06-25
        • 1970-01-01
        相关资源
        最近更新 更多