android.view.InflateException: 在初始化进度条时,解析XML文件第6行二进制代码时出错,无法膨胀类<unknown>。

4

这个问题并不是每次都出现,它是随机的。 而且主要出现在Nexus 7上。

我已经搜索过了,但还没有找到解决办法。 请帮帮我。

03-15 15:27:56.839: E/AndroidRuntime(22187): FATAL EXCEPTION: main
03-15 15:27:56.839: E/AndroidRuntime(22187): Process: com.tmwtg, PID: 22187
03-15 15:27:56.839: E/AndroidRuntime(22187): android.view.InflateException: Binary XML file line #6: Error inflating class <unknown>
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.createView(LayoutInflater.java:620)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.Dialog.setContentView(Dialog.java:477)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.tmwtg.common.CustomLoader.<init>(CustomLoader.java:18)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.tmwtg.profile.ProfilePage.onCreateView(ProfilePage.java:191)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.Fragment.performCreateView(Fragment.java:1700)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.BackStackRecord.run(BackStackRecord.java:684)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.os.Handler.handleCallback(Handler.java:733)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.os.Handler.dispatchMessage(Handler.java:95)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.os.Looper.loop(Looper.java:136)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.app.ActivityThread.main(ActivityThread.java:5017)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at java.lang.reflect.Method.invokeNative(Native Method)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at java.lang.reflect.Method.invoke(Method.java:515)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at dalvik.system.NativeStart.main(Native Method)
03-15 15:27:56.839: E/AndroidRuntime(22187): Caused by: java.lang.reflect.InvocationTargetException
03-15 15:27:56.839: E/AndroidRuntime(22187):    at java.lang.reflect.Constructor.constructNative(Native Method)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.view.LayoutInflater.createView(LayoutInflater.java:594)
03-15 15:27:56.839: E/AndroidRuntime(22187):    ... 26 more
03-15 15:27:56.839: E/AndroidRuntime(22187): Caused by: java.lang.OutOfMemoryError
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.content.res.Resources.loadDrawable(Resources.java:2110)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.content.res.Resources.getDrawable(Resources.java:700)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.content.res.Resources.loadDrawable(Resources.java:2092)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.widget.ProgressBar.<init>(ProgressBar.java:294)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.widget.ProgressBar.<init>(ProgressBar.java:246)
03-15 15:27:56.839: E/AndroidRuntime(22187):    at android.widget.ProgressBar.<init>(ProgressBar.java:242)
03-15 15:27:56.839: E/AndroidRuntime(22187):    ... 29 more

这是我的CustomLoader类:
public class CustomLoader extends Dialog {

public CustomLoader(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public CustomLoader(Context context, int theme) {
    super(context, theme);
    // TODO Auto-generated constructor stub
    setContentView(R.layout.custom_progress_view);
}

public CustomLoader(Context context, boolean cancelable,
        OnCancelListener cancelListener) {
    super(context, cancelable, cancelListener);
    // TODO Auto-generated constructor stub
}

我遇到了一个问题,出现在这一行:

CustomLoader p;

错误提示如下:

p = new CustomLoader(getActivity(),
            android.R.style.Theme_Translucent_NoTitleBar);

这是我的XML类:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black_trans" >

<ProgressBar
    android:id="@+id/progress"
    android:layout_width="130dp"
    android:layout_height="130dp"
    android:layout_centerInParent="true"
    android:layout_gravity="center"
    android:indeterminateDrawable="@drawable/anim_progress" />

我认为这不是内存问题,因为当我添加这个时。
@Override
public void onLowMemory() {
    Toast.makeText(getActivity(), "its a low memory sign.....",
            Toast.LENGTH_SHORT).show();
}

崩溃前未显示toast。


1
似乎是内存不足了。这是一张非常大的图片吗? - donfuxx
1
"anim_progress" 似乎占用了太多的内存。尝试使用一个缩小的图像。 - Raghav Sood
@ donfuxx 是的,这是一张相机图片,大约2.5 MB,还有很多其他的图片。 - Ankit
@Raghav Sood,您是在建议在anim_progress中使用低分辨率图像吗?抱歉,我没听懂您的意思。 - Ankit
2个回答

1
我遇到了一个问题,评论中的大部分猜测都是正确的。它是一个内存问题,实际上,在每个片段初始化时我创建了一个新的加载器,而没有完成上一个加载器,因此在切换到4-5个片段后就会崩溃。现在我在我的活动类中初始化了一个静态加载器,并在片段中使用该实例,这解决了我的问题。 感谢您的评论。

0

当您尝试在应用程序中使用过大的图像时,此错误也会经常出现,并可能导致内存问题,因此请确保您要使用的资源存在且不太大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接