尝试在 Android 应用程序中显示进度条和图像时遇到错误:
07-02 12:33:55.008: E/AndroidRuntime(1565): FATAL EXCEPTION: main
07-02 12:33:55.008: E/AndroidRuntime(1565): Process: com.example.app, PID: 1565
07-02 12:33:55.008: E/AndroidRuntime(1565): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.Download}: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.ProgressBar
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.os.Looper.loop(Looper.java:136)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-02 12:33:55.008: E/AndroidRuntime(1565): at java.lang.reflect.Method.invokeNative(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565): at java.lang.reflect.Method.invoke(Method.java:515)
07-02 12:33:55.008: E/AndroidRuntime(1565): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-02 12:33:55.008: E/AndroidRuntime(1565): at dalvik.system.NativeStart.main(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class android.widget.ProgressBar
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.createView(LayoutInflater.java:620)
07-02 12:33:55.008: E/AndroidRuntime(1565): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
07-02 12:33:55.008: E/AndroidRuntime(1565): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.Activity.setContentView(Activity.java:1929)
07-02 12:33:55.008: E/AndroidRuntime(1565): at com.example.app.Download.onCreate(Download.java:78)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.Activity.performCreate(Activity.java:5231)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-02 12:33:55.008: E/AndroidRuntime(1565): ... 11 more
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: java.lang.reflect.InvocationTargetException
07-02 12:33:55.008: E/AndroidRuntime(1565): at java.lang.reflect.Constructor.constructNative(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565): at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.view.LayoutInflater.createView(LayoutInflater.java:594)
07-02 12:33:55.008: E/AndroidRuntime(1565): ... 25 more
07-02 12:33:55.008: E/AndroidRuntime(1565): Caused by: java.lang.OutOfMemoryError
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.content.res.Resources.loadDrawable(Resources.java:2110)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.content.res.Resources.getDrawable(Resources.java:700)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.content.res.Resources.loadDrawable(Resources.java:2092)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.widget.ProgressBar.<init>(ProgressBar.java:294)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.widget.ProgressBar.<init>(ProgressBar.java:246)
07-02 12:33:55.008: E/AndroidRuntime(1565): at android.widget.ProgressBar.<init>(ProgressBar.java:242)
07-02 12:33:55.008: E/AndroidRuntime(1565): ... 28 more
错误似乎在第 78 行崩溃:setContentView(R.layout.download);
但它也引用了内存不足问题,我过去已经通过实现以下方法解决了该问题:
@Override
protected void onDestroy() {
super.onDestroy();
unbindDrawables(findViewById(R.id.ListView_layout));
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
但是在这种情况下,应用程序在执行此操作后仍然崩溃,我不确定为什么。
来源:
最佳答案
只需将以下代码添加到应用程序标记中的 list 文件中:
android:largeHeap="true"
当我在 android 5 或更高版本上测试我自己的应用程序时,我遇到了这个问题。
关于android - 错误膨胀类 android.widget.ProgressBar/致命强制关闭错误 - Android/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191940/