2012-05-29 142 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替換所有不同種類的佈局。