2012-05-29 3 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: Есть ли причина, по которой вы создаете 'TextView' в' ScrollView'? Это кажется ненужным, поскольку «TextView» может обрабатывать собственную прокрутку. – Squonk

+0

Это точно мой логарифм. И в чем главная проблема? – alicanbatur

ответ

1

«Букет текста в прокрутке» будет генерировать огромное изображение, даже если только небольшая часть текста будет видна за раз, благодаря scrollview.

Постарайтесь определить, какая часть текста будет видимой, и обработать только это.

1

Ваш макет выглядит сложным. Попробуйте заменить все различные типы макетов только одним RelativeLayout.