2012-05-29 104 views
4

我一直在我的开发者控制台看到此内存不足的错误,我不知道什么时候,为什么的OutOfMemoryError充气布局

日志:

android.view.InflateException: Binary XML file line #52: Error inflating class <unknown> 
at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212) 
at android.app.Dialog.setContentView(Dialog.java:421) 
at ecm2.android.MessageDialog.PopUpMessage(MessageDialog.java:90) 
at ecm2.android.MainActivity.PopMessage(MainActivity.java:1830) 
at ecm2.android.MainActivity$10.onItemClick(MainActivity.java:1355) 
at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
at android.widget.ListView.performItemClick(ListView.java:3513) 
at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812) 
at android.os.Handler.handleCallback(Handler.java:587) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3703) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
... 24 more 
Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460) 
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336) 
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 
at android.content.res.Resources.loadDrawable(Resources.java:1709) 
at android.content.res.Resources.getDrawable(Resources.java:581) 
at android.widget.ScrollView.setOverScrollMode(ScrollView.java:1404) 
at android.view.View.<init>(View.java:1879) 
at android.view.View.<init>(View.java:1921) 
at android.view.ViewGroup.<init>(ViewGroup.java:292) 
at android.widget.FrameLayout.<init>(FrameLayout.java:88) 
at android.widget.ScrollView.<init>(ScrollView.java:145) 
at android.widget.ScrollView.<init>(ScrollView.java:141) 

这是我的布局XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout_root"    
android:orientation="vertical" 
android:layout_height="match_parent" 
android:padding="2dip" android:paddingTop="2dip" android:layout_width="fill_parent"> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_height="match_parent" 
    android:padding="0dip" android:layout_width="fill_parent"> 

    <RelativeLayout 
     android:id="@+id/contentLayout2" 
     android:orientation="vertical" 
     android:padding="0dip" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top|left" 
     android:background="#000000" 
     android:layout_weight="0" android:layout_width="fill_parent"> 

     <ImageView 
      android:id="@+id/imgIcon" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_gravity="top|left" android:contentDescription="@string/desc"> 
     </ImageView> 

     <TextView 
      android:layout_height="wrap_content" 
      android:text="" 
      android:id="@+id/txtDialogHeader" 
      android:layout_width="match_parent" 
      android:textStyle="bold" 
      android:layout_toRightOf="@id/imgIcon" 
      android:paddingLeft="5dip" android:textColor="#ff2525" android:textSize="18dip"> 
     </TextView> 

     <TextView 
      android:layout_height="wrap_content" 
      android:text="" 
      android:id="@+id/txtDialogTOC" 
      android:layout_width="match_parent" 
      android:layout_toRightOf="@id/imgIcon" 
      android:layout_below="@id/txtDialogHeader" 
      android:paddingLeft="5dip" android:textSize="19dip" android:textStyle="bold"> 
     </TextView> 

    </RelativeLayout> 

    <ScrollView  
     android:id="@+id/scrollMessageFrame" 
     android:layout_height="match_parent" 
     android:padding="0dip" 
     android:background="#AA0000" 
     android:layout_weight="1" android:layout_width="fill_parent"> 

     <TextView 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:text="" 
      android:id="@+id/lblMessage" 
      android:padding="5dip" 
      android:background="#000000" 
      android:minHeight="140dip" android:textColor="#f2f2f2" android:textSize="20dip"> 
     </TextView> 

    </ScrollView> 

    <RelativeLayout 
     android:id="@+id/contentLayout3" 
     android:orientation="vertical" 
     android:background="#000000" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" android:layout_width="match_parent"> 

     <ImageButton 
      android:id="@+id/cmdResponding" 
      android:layout_width="62dip" 
      android:layout_height="62dip" 
      android:layout_marginRight="10dip" 
      android:contentDescription="@string/desc" 
      android:src="@drawable/responding_ref" android:background="@drawable/responding_up" android:layout_marginTop="5dip" android:layout_marginLeft="5dip"> 
</ImageButton> 
     <ImageButton android:id="@+id/cmdDeclining" android:src="@drawable/declining_ref" android:background="@drawable/declining_up" android:layout_alignTop="@+id/cmdResponding" android:layout_alignBottom="@+id/cmdResponding" android:layout_height="62dip" android:layout_width="62dip" android:layout_marginLeft="3dip" android:layout_toRightOf="@+id/cmdResponding" android:layout_marginRight="10dip" android:contentDescription="@string/desc"></ImageButton> 

     <ImageButton 
      android:id="@+id/cmdChiefList" 
      android:layout_width="62dip" 
      android:layout_height="62dip" 
      android:layout_toRightOf="@+id/cmdDeclining" android:background="@drawable/chief_up" android:layout_marginRight="10dip" android:src="@drawable/chief_ref" android:contentDescription="@string/desc" android:layout_marginTop="5dip" android:layout_marginLeft="6dip"/> 

     <ImageButton android:id="@+id/cmdMapping" android:background="@drawable/globe_up" android:src="@drawable/mapping_ref" android:layout_height="60dip" android:layout_width="60dip" android:layout_marginLeft="2dip" android:layout_toRightOf="@+id/cmdChiefList" android:layout_marginTop="5dip" android:contentDescription="@string/desc"></ImageButton> 

    </RelativeLayout> 

</LinearLayout> 

<Button 
    android:text="" 
    android:textSize="16dip" 
    android:layout_height="40dip" 
    android:layout_width="40dip" 
    android:id="@+id/cmdExit" 
    android:background="@drawable/closepopup" 
    android:layout_gravity="top|right" android:contentDescription="@string/desc"> 
</Button> 

</FrameLayout> 

错误所在的行是setContentView(r.layout.mylayout)。在这个布局中没有大的图像,大多数都是小的imagebuttons共有6张图像(biggest image is 90x90)和一大堆文字scrollview。所以我该如何解决这个问题?

+0

只是出于好奇,你有没有尝试过使用布局文件没有图像? “一堆文字”多少钱? – Luksprog

+0

@tyczj:你在'ScrollView'中放置'TextView'有什么原因吗?看起来没有必要,因为'TextView'可以处理自己的滚动。 – Squonk

+0

这正是我的logcat。这里的主要问题是什么? – alicanbatur

回答

1

“滚动视图中的一堆文本”将生成巨大的图像,即使只有一小部分文本一次可见,这要归功于滚动视图。

尝试确定文本的哪一部分将可见,并仅处理该部分。

1

你的布局看起来很复杂。尝试用一个RelativeLayout替换所有不同种类的布局。