android.view.InflateException:二进制 XML 文件第 8 行 [英] android.view.InflateException: Binary XML file line #8

查看:16
本文介绍了android.view.InflateException:二进制 XML 文件第 8 行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,该程序已被放入后台应用程序停止已被调用.应用程序被带回前台,这是发生错误的时候.该应用程序由于某种原因无法加载 xml 文件,代码和 xml 每次都在我的手机 HTC Desire One 上工作.有什么明显的东西可以解决这个问题,或者有什么关于如何追踪这个问题的建议吗?

From what I can gather the program has been put into the background Application Stop has been called. The application is brought back into the forground and this is when the error is occuring. The app is unable to load the xml file for whatever reason, the code and xml work everytime on my phone HTC Desire One. Is there anything obvious that I can look at to fix this, or any suggestions as to how to track down this problem?

这是我从 TestFlight 返回的调用堆栈.

This is the call stack that I get back from TestFlight.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hdms.manager/com.hdms.manager.Drawable.SplashScreen}: android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
android.app.ActivityThread.performLaunchActivity in ActivityThread.java on Line 2247
android.app.ActivityThread.handleLaunchActivity in ActivityThread.java on Line 2297
android.app.ActivityThread.access$700 in ActivityThread.java on Line 152
android.app.ActivityThread$H.handleMessage in ActivityThread.java on Line 1282
android.os.Handler.dispatchMessage in Handler.java on Line 99
android.os.Looper.loop in Looper.java on Line 137
android.app.ActivityThread.main in ActivityThread.java on Line 5328
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke in Method.java on Line 511
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run in ZygoteInit.java on Line 1102
com.android.internal.os.ZygoteInit.main in ZygoteInit.java on Line 869
dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
android.view.LayoutInflater.createView in LayoutInflater.java on Line 619
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView in PhoneLayoutInflater.java on Line 56
android.view.LayoutInflater.onCreateView in LayoutInflater.java on Line 666
android.view.LayoutInflater.createViewFromTag in LayoutInflater.java on Line 691
android.view.LayoutInflater.rInflate in LayoutInflater.java on Line 752
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 495
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 397
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 353
com.android.internal.policy.impl.PhoneWindow.setContentView in PhoneWindow.java on Line 327
android.app.Activity.setContentView in Activity.java on Line 1928
com.hdms.manager.Drawable.SplashScreen.onCreate in SplashScreen.java on Line 25
android.app.Activity.performCreate in Activity.java on Line 5250
android.app.Instrumentation.callActivityOnCreate in Instrumentation.java on Line 1097
android.app.ActivityThread.performLaunchActivity in ActivityThread.java on Line 2211
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
java.lang.reflect.Constructor.constructNative(Native Method)
java.lang.reflect.Constructor.newInstance in Constructor.java on Line 417
android.view.LayoutInflater.createView in LayoutInflater.java on Line 593
... 24 more
Caused by: java.lang.OutOfMemoryError
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
android.graphics.BitmapFactory.decodeStream in BitmapFactory.java on Line 596
android.graphics.BitmapFactory.decodeResourceStream in BitmapFactory.java on Line 444
android.graphics.drawable.Drawable.createFromResourceStream in Drawable.java on Line 817
android.content.res.Resources.loadDrawable in Resources.java on Line 2854
android.content.res.TypedArray.getDrawable in TypedArray.java on Line 602
android.widget.ImageView.<init> in ImageView.java on Line 126
android.widget.ImageView.<init> in ImageView.java on Line 116
... 27 more
android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
android.view.LayoutInflater.createView in LayoutInflater.java on Line 619
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView in PhoneLayoutInflater.java on Line 56
android.view.LayoutInflater.onCreateView in LayoutInflater.java on Line 666
android.view.LayoutInflater.createViewFromTag in LayoutInflater.java on Line 691
android.view.LayoutInflater.rInflate in LayoutInflater.java on Line 752
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 495
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 397
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 353
com.android.internal.policy.impl.PhoneWindow.setContentView in PhoneWindow.java on Line 327
android.app.Activity.setContentView in Activity.java on Line 1928
com.hdms.manager.Drawable.SplashScreen.onCreate in SplashScreen.java on Line 25
android.app.Activity.performCreate in Activity.java on Line 5250
android.app.Instrumentation.callActivityOnCreate in Instrumentation.java on Line 1097
android.app.ActivityThread.performLaunchActivity in ActivityThread.java on Line 2211
android.app.ActivityThread.handleLaunchActivity in ActivityThread.java on Line 2297
android.app.ActivityThread.access$700 in ActivityThread.java on Line 152
android.app.ActivityThread$H.handleMessage in ActivityThread.java on Line 1282
android.os.Handler.dispatchMessage in Handler.java on Line 99
android.os.Looper.loop in Looper.java on Line 137
android.app.ActivityThread.main in ActivityThread.java on Line 5328
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke in Method.java on Line 511
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run in ZygoteInit.java on Line 1102
com.android.internal.os.ZygoteInit.main in ZygoteInit.java on Line 869
dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
java.lang.reflect.Constructor.constructNative(Native Method)
java.lang.reflect.Constructor.newInstance in Constructor.java on Line 417
android.view.LayoutInflater.createView in LayoutInflater.java on Line 593
... 24 more
Caused by: java.lang.OutOfMemoryError
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
android.graphics.BitmapFactory.decodeStream in BitmapFactory.java on Line 596
android.graphics.BitmapFactory.decodeResourceStream in BitmapFactory.java on Line 444
android.graphics.drawable.Drawable.createFromResourceStream in Drawable.java on Line 817
android.content.res.Resources.loadDrawable in Resources.java on Line 2854
android.content.res.TypedArray.getDrawable in TypedArray.java on Line 602
android.widget.ImageView.<init> in ImageView.java on Line 126
android.widget.ImageView.<init> in ImageView.java on Line 116
... 27 more
java.lang.reflect.InvocationTargetException
java.lang.reflect.Constructor.constructNative(Native Method)
java.lang.reflect.Constructor.newInstance in Constructor.java on Line 417
android.view.LayoutInflater.createView in LayoutInflater.java on Line 593
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView in PhoneLayoutInflater.java on Line 56
android.view.LayoutInflater.onCreateView in LayoutInflater.java on Line 666
android.view.LayoutInflater.createViewFromTag in LayoutInflater.java on Line 691
android.view.LayoutInflater.rInflate in LayoutInflater.java on Line 752
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 495
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 397
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 353
com.android.internal.policy.impl.PhoneWindow.setContentView in PhoneWindow.java on Line 327
android.app.Activity.setContentView in Activity.java on Line 1928
com.hdms.manager.Drawable.SplashScreen.onCreate in SplashScreen.java on Line 25
android.app.Activity.performCreate in Activity.java on Line 5250
android.app.Instrumentation.callActivityOnCreate in Instrumentation.java on Line 1097
android.app.ActivityThread.performLaunchActivity in ActivityThread.java on Line 2211
android.app.ActivityThread.handleLaunchActivity in ActivityThread.java on Line 2297
android.app.ActivityThread.access$700 in ActivityThread.java on Line 152
android.app.ActivityThread$H.handleMessage in ActivityThread.java on Line 1282
android.os.Handler.dispatchMessage in Handler.java on Line 99
android.os.Looper.loop in Looper.java on Line 137
android.app.ActivityThread.main in ActivityThread.java on Line 5328
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke in Method.java on Line 511
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run in ZygoteInit.java on Line 1102
com.android.internal.os.ZygoteInit.main in ZygoteInit.java on Line 869
dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.OutOfMemoryError
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
android.graphics.BitmapFactory.decodeStream in BitmapFactory.java on Line 596
android.graphics.BitmapFactory.decodeResourceStream in BitmapFactory.java on Line 444
android.graphics.drawable.Drawable.createFromResourceStream in Drawable.java on Line 817
android.content.res.Resources.loadDrawable in Resources.java on Line 2854
android.content.res.TypedArray.getDrawable in TypedArray.java on Line 602
android.widget.ImageView.<init> in ImageView.java on Line 126
android.widget.ImageView.<init> in ImageView.java on Line 116
... 27 more
java.lang.OutOfMemoryError
android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
android.graphics.BitmapFactory.decodeStream in BitmapFactory.java on Line 596
android.graphics.BitmapFactory.decodeResourceStream in BitmapFactory.java on Line 444
android.graphics.drawable.Drawable.createFromResourceStream in Drawable.java on Line 817
android.content.res.Resources.loadDrawable in Resources.java on Line 2854
android.content.res.TypedArray.getDrawable in TypedArray.java on Line 602
android.widget.ImageView.<init> in ImageView.java on Line 126
android.widget.ImageView.<init> in ImageView.java on Line 116
java.lang.reflect.Constructor.constructNative(Native Method)
java.lang.reflect.Constructor.newInstance in Constructor.java on Line 417
android.view.LayoutInflater.createView in LayoutInflater.java on Line 593
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView in PhoneLayoutInflater.java on Line 56
android.view.LayoutInflater.onCreateView in LayoutInflater.java on Line 666
android.view.LayoutInflater.createViewFromTag in LayoutInflater.java on Line 691
android.view.LayoutInflater.rInflate in LayoutInflater.java on Line 752
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 495
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 397
android.view.LayoutInflater.inflate in LayoutInflater.java on Line 353
com.android.internal.policy.impl.PhoneWindow.setContentView in PhoneWindow.java on Line 327
android.app.Activity.setContentView in Activity.java on Line 1928
com.hdms.manager.Drawable.SplashScreen.onCreate in SplashScreen.java on Line 25
android.app.Activity.performCreate in Activity.java on Line 5250
android.app.Instrumentation.callActivityOnCreate in Instrumentation.java on Line 1097
android.app.ActivityThread.performLaunchActivity in ActivityThread.java on Line 2211
android.app.ActivityThread.handleLaunchActivity in ActivityThread.java on Line 2297
android.app.ActivityThread.access$700 in ActivityThread.java on Line 152
android.app.ActivityThread$H.handleMessage in ActivityThread.java on Line 1282
android.os.Handler.dispatchMessage in Handler.java on Line 99
android.os.Looper.loop in Looper.java on Line 137
android.app.ActivityThread.main in ActivityThread.java on Line 5328
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke in Method.java on Line 511
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run in ZygoteInit.java on Line 1102
com.android.internal.os.ZygoteInit.main in ZygoteInit.java on Line 869
dalvik.system.NativeStart.main(Native Method)

这是xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#000000" >


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:src="@drawable/splash_image"
        android:layout_centerInParent="true"
        android:scaleType="centerCrop"/>

    <!--<VideoView android:layout_height="wrap_content"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:id="@+id/videoView"/>-->

</RelativeLayout>

还有代码

package com.hdms.manager.Drawable;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import com.hdms.manager.MainActivity;
import com.hdms.manager.R;

/**
 * Created by bradj on 8/10/13.
 *
 */

public class SplashScreen extends Activity
{
    // Splash screen timer
    private static final int mDisplaySplashScreen = 500;

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

        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                // This method will be executed once the timer is over
                // Start your app main activity
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);

                // close this activity
                finish();
            }
        }, mDisplaySplashScreen);
    }
}

推荐答案

那些堆栈报告是 OutOfMemory 异常,即设备内存不足.

Those stack reports are OutOfMemory exceptions, i.e. the device is out of memory.

检查您将背景图像放置在哪个可绘制目录中,对于 768x1280 像素,它应该是 drawable-xhdpi.Android 会自动缩放图像以适应其他屏幕尺寸,这意味着如果您将图像放置在 drawable-mdpi 中,对于 xxhdpi 设备(例如三星 4),它将被缩放到 2304x3840.

Check in which drawable directory you are placing the background image, for 768x1280 px it should be drawable-xhdpi. Android automatically scales the image for other screen sizes, which means that if you place the image in drawable-mdpi it will be scaled to 2304x3840 for xxhdpi devices such as the Samsung 4.

请注意,建议为每个支持的屏幕尺寸提供位图资源.在此处查看有关支持多种屏幕尺寸的更多信息 http://developer.android.com/guide/practices/screens_support.html

Note that it is recommended to provide a bitmap resource for each supported screen size. See more about supporting multiple screen sizes here http://developer.android.com/guide/practices/screens_support.html

除了使用 setContentView 上的 try 子句捕获异常并优雅地处理之外,您几乎无法对 OutOfMemoryException 做些什么.有一些非常糟糕的 Android 设备经常出现内存问题.您应该将您的应用程序连接到更好的错误报告系统,您可以在其中获取更多设备数据,以确认是这种情况.

Other than that there is little that you can do about OutOfMemoryException other than catching the exception with a try clause on setContentView and handling it gracefully. There are some really poor Android devices out there where memory problems are frequent. You should connect your App to a better error reporting system, where you get more device data, to confirm that this is the case.

这篇关于android.view.InflateException:二进制 XML 文件第 8 行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆