在android studio中膨胀布局时出错

时间:2017-07-05 18:48:45

标签: android android-layout listview android-studio fatal-error

我想通过膨胀不同的布局在我的列表视图中添加页脚 这是我的代码......

View loadMoreView, loading_img;

loading_img = ((LayoutInflater)this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                .inflate(R.layout.loading_img, null, false);

loadMoreView = ((LayoutInflater)this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                .inflate(R.layout.load_more_btn, null, false);

这是xml文件loading_img.xml代码....

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <pl.droidsonroids.gif.GifImageView
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:id="@+id/loading_img"
        android:src="@mipmap/progress_bar_default"
        android:background="@color/pd_color1"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="14dp"
        android:layout_marginBottom="10dp"/>

</LinearLayout>

但它显示错误....

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.plexusd.plexusd/com.plexusd.plexusd.Notification}: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class <unknown>
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2572)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654)
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                     at android.os.Looper.loop(Looper.java:207)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5728)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                                                                  Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class <unknown>
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                     at com.plexusd.plexusd.Notification.onCreate(Notification.java:104)
                                                                     at android.app.Activity.performCreate(Activity.java:6337)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                     at android.os.Looper.loop(Looper.java:207) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
                                                                  Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
                                                                     at android.view.LayoutInflater.createView(LayoutInflater.java:645)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                     at com.plexusd.plexusd.Notification.onCreate(Notification.java:104) 
                                                                     at android.app.Activity.performCreate(Activity.java:6337) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                     at android.os.Looper.loop(Looper.java:207) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
                                                                  Caused by: java.lang.reflect.InvocationTargetException
                                                                     at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                     at android.view.LayoutInflater.createView(LayoutInflater.java:619)
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                     at com.plexusd.plexusd.Notification.onCreate(Notification.java:104) 
                                                                     at android.app.Activity.performCreate(Activity.java:6337) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                     at android.os.Looper.loop(Looper.java:207) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
                                                                  Caused by: java.lang.OutOfMemoryError: Failed to allocate a 3686412 byte allocation with 2971336 free bytes and 2MB until OOM
                                                                     at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                     at android.graphics.Bitmap.nativeCreate(Native Method)
                                                                     at android.graphics.Bitmap.createBitmap(Bitmap.java:831)
                                                                     at android.graphics.Bitmap.createBitmap(Bitmap.java:808)
                                                                     at android.graphics.Bitmap.createBitmap(Bitmap.java:775)
                                                                     at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:248)
                                                                     at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:160)
                                                                     at pl.droidsonroids.gif.GifDrawable.<init>(GifDrawable.java:95)
                                                                     at pl.droidsonroids.gif.GifViewUtils.setResource(GifViewUtils.java:53)
                                                                     at pl.droidsonroids.gif.GifViewUtils.getResourceId(GifViewUtils.java:41)
                                                                     at pl.droidsonroids.gif.GifViewUtils.initImageView(GifViewUtils.java:29)
                                                                     at pl.droidsonroids.gif.GifImageView.<init>(GifImageView.java:41)
                                                                     at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                     at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
                                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                     at com.plexusd.plexusd.Notification.onCreate(Notification.java:104) 
                                                                     at android.app.Activity.performCreate(Activity.java:6337) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                     at android.os.Looper.loop(Looper.java:207) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5728) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 

07-06 00:23:56.956 24424-24424 / com.plexusd.plexusd I / Process:发送信号。 PID:24424 SIG:9

1 个答案:

答案 0 :(得分:0)

原因显示在stacktrace的底部:

Caused by: java.lang.OutOfMemoryError: Failed to allocate a 3686412 byte allocation with 2971336 free bytes and 2MB until OOM

建议的处理OOM的方法是:

  
      
  1. 如果您正在处理大型GIF,可以对它们进行二次采样,请参阅:#284(评论)

  2.   
  3. 您可以在Android Studio中使用MAT或Memory Monitor等工具来查找潜在原因。

  4.   
  5. 您可以在AndroidManifest.xml中使用android:largeHeap =“true”或将应用程序划分为以增加可用堆空间   单独的进程(通过添加android:process标签)但那些   变通办法可能会引起副作用。

  6.   

https://github.com/koral--/android-gif-drawable/issues/326

相关问题