2013-12-19 2 views
26

Вот мой код:InflateException: Binary XML файл строка # 1: Ошибка при наполнении класса <unknown> вызванные OutOfMemoryError

Input.xml (папка раскладка)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:background="@drawable/background_main" > 

    <ImageView 
     android:id="@+id/logo_image" 
     android:background="@drawable/background_green" 
     android:src="@drawable/titleimage" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     /> 

    <ScrollView 
     android:id="@+id/scroller" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/logo_image" 
     android:layout_marginTop="10dp" 
     > 

     <TableLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:stretchColumns="*" > 

      <TableRow 
       android:id="@+id/device_type_row" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:paddingTop="5dp" 
       android:paddingBottom="5dp" 
       android:layout_marginRight="5dp" > 

       <RadioButton 
        android:id="@+id/device_type_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/device_type" /> 

       <RadioGroup 
        android:id="@+id/device_type_radio_selection" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <RadioButton 
         android:id="@+id/radioIos" 
         android:layout_width="wrap_content" 
         android:layout_height = "wrap_content" 
         android:textAppearance="?android:attr/textAppearanceSmall" 
         android:text="@string/iOS" 
         /> 

        <RadioButton 
         android:id="@+id/radioAndroid" 
         android:layout_width="wrap_content" 
         android:layout_height = "wrap_content" 
         android:textAppearance="?android:attr/textAppearanceSmall" 
         android:text="@string/android" 
         /> 


       </RadioGroup> 


      </TableRow> 

      <TableRow 
       android:id="@+id/days_as_customers_row" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingTop="5dp" 
       android:paddingBottom="5dp" 
       android:layout_marginRight="5dp" > 

       <RadioButton 
        android:id="@+id/days_as_customers_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/days_as_customers" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/days_as_customer_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/days_as_customer_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="1/210" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 

      </TableRow> 

      <TableRow 
       android:id="@+id/average_sessions_row" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/average_sessions" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/average_sessions" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/average_sessions_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/average_sessions_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="240/9000" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/conversion_time_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/conversion_title" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/conversion_time_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/conversion_time_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="3/55" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 

      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/monthly_spend_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/monthly_spend" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/monthly_spend_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/monthly_spend_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="3/55" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 

      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow6" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/virality_invites_sent_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/virality_invites_sent" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/virality_invites_sent_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/virality_invites_sent_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="0-50" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 



      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow7" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/churned_users_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/churned_users" /> 

       <RadioGroup 
        android:id="@+id/churned_users_radio_selection" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <RadioButton 
         android:id="@+id/radioYes" 
         android:layout_width="wrap_content" 
         android:layout_height = "wrap_content" 
         android:textAppearance="?android:attr/textAppearanceSmall" 
         android:text="@string/iOS" 
         /> 

        <RadioButton 
         android:id="@+id/radioNo" 
         android:layout_width="wrap_content" 
         android:layout_height = "wrap_content" 
         android:textAppearance="?android:attr/textAppearanceSmall" 
         android:text="@string/android" 
         /> 


       </RadioGroup> 

      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow8" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
        android:id="@+id/ltv_total_spent_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="@string/ltv_total_spent" /> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:weightSum="2" > 

        <SeekBar 
         android:id="@+id/ltv_total_spent_seekbar" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" /> 

        <TextView 
         android:id="@+id/ltv_total_spent_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="0$-80$" 
         android:layout_weight="1" 
         android:singleLine="true" 
         android:textAppearance="?android:attr/textAppearanceSmall" /> 

       </LinearLayout> 

      </TableRow> 
     </TableLayout> 

    </ScrollView> 

    <Button 
     android:id="@+id/input_submit_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/submit_button_img" /> 

</RelativeLayout> 

InputFragment.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.RadioButton; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextView; 
import android.widget.Toast; 

public class InputFragment extends Fragment { 

    private Button submit; 
    private RadioButton deviceTypeRadio, daysAsCustomerRadio, averageSessionsRadio, conversionTimeRadio; 
    private RadioButton monthlySpendRadio,viralityInvitesSentRadio, churnedUsersRadio, LTVTotalSpentRadio; 
    private SeekBar daysAsCustomerSeek, averageSessionSeek, conersionTimeSeek, monthlySpendSeek; 
    private SeekBar viralityInvitesSeek, ltvTotalSpentSeek; 
    private TextView daysasAsCustomerText, averageSessionText, conversionTimeText, monthlySpendText; 
    private TextView viralityInvitesText, letvTotalText; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     //Intializing instance variables 
     View view = inflater.inflate(R.layout.input, container,false); 

     submit = (Button)view.findViewById(R.id.input_submit_button); 

     return view; 

    } 

} 

Я могу запустить этот код правильно, но когда я изменил ориентацию Эмулятор, он дает следующую ошибку.

12-19 11:17:53.590: E/AndroidRuntime(5644): FATAL EXCEPTION: main 
12-19 11:17:53.590: E/AndroidRuntime(5644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.nFlate.xxx.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.access$700(ActivityThread.java:141) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.os.Looper.loop(Looper.java:137) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at dalvik.system.NativeStart.main(Native Method) 
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at com.nFlate.nflate.InputFragment.onCreateView(InputFragment.java:30) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1877) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.Activity.performStart(Activity.java:5114) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  ... 12 more 
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: java.lang.reflect.InvocationTargetException 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at java.lang.reflect.Constructor.constructNative(Native Method) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  ... 27 more 
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: java.lang.OutOfMemoryError 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.content.res.Resources.loadDrawable(Resources.java:1965) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.View.<init>(View.java:3330) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.View.<init>(View.java:3259) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.view.ViewGroup.<init>(ViewGroup.java:425) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  at android.widget.RelativeLayout.<init>(RelativeLayout.java:210) 
12-19 11:17:53.590: E/AndroidRuntime(5644):  ... 30 more 

В основном, ошибка нацеливания ниже места:

View view = inflater.inflate(R.layout.input, container,false); 

Это происходит только в эмуляторе, а не в телефоне. Что здесь не так?

ответ

75

Проверьте свой drawable/background_main, т. Е. Фоновое изображение корневого макета - при завершении декодирования растрового изображения в VM заканчивается память. Уменьшите размеры изображения.

+0

Здравствуйте, вы имели в виду уменьшить размер растрового изображения? –

+1

Да, уменьшите размер растрового изображения, уменьшив размеры изображения, то есть разрешение. – laalto

+0

этот ответ помог мне. Спасибо :) – Steve

3

Вы используете этот макет в фрагменте не в Activity.And также есть другое исключение OutOfMemory фоновое изображение очень большая попытка уменьшить его ..

6

Проблема возникает потому, что * вытяжке/background_main * имеет изображение с высоким разрешением. Поэтому, когда он загружается, В VM заканчивается память.

Лучше всего уменьшить его размер или разрешение.

2

Вызвано: java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет VM, который может быть настоящим преступником. Попробуйте использовать меньшее изображение, чтобы узнать, является ли это проблемой, связанной с памятью. Проверьте эти ссылки на примеры подобных вопросов:

java.lang.OutOfMemoryError: bitmap size exceeds VM budget - android - how many images? и OutOfMemory exception when loading bitmap from external storage

1

Я решил такую ​​же проблему, уменьшая размер .png кнопок во всех файлах XML

1

Попробуйте использовать изображения различные разрешения, такие как mdpi, hdpi, xhdpi, если используются только изображения с более высоким разрешением, это может привести к сбою в телефонах с низким разрешением.

1

Моя проблема заключалась в том, что у меня была форма с <solid> с цветом ?selectableItemBackground. Да, это глупо и конкретный случай, но отправляйте его здесь для людей с той же ошибкой.

0

Ну, в моем случае ответ был в дизайне XML, андроид конфликта: backgroundTint и Android: подкрашивать

I was design a FloatinActionButton like this:

<android.support.design.widget.FloatingActionButton 
        android:id="@+id/fa_close_patient" 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:scaleX="0.8" 
        android:scaleY="0.8" 
        android:layout_alignParentEnd="true" 
        android:layout_centerVertical="true" 
        android:layout_gravity="right" 
        android:layout_marginEnd="30dp" 
        android:backgroundTint="@color/white" 
        android:src="@drawable/ic_close_black_24dp" 
        android:tint="@color/colorPrimaryDark" /> 

и это нормально, но API> 23

If u design for API_LEVEL < 23, this it's the fix

<android.support.design.widget.FloatingActionButton 
        android:id="@+id/fa_close_patient" 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:scaleX="0.8" 
        android:scaleY="0.8" 
        android:layout_alignParentEnd="true" 
        android:layout_centerVertical="true" 
        android:layout_gravity="right" 
        android:layout_marginEnd="30dp" 
        app:backgroundTint="@color/white" 
        android:src="@drawable/ic_close_black_24dp"/> 

Надеюсь, что я вам помогу,

С уважением

 Смежные вопросы

  • Нет связанных вопросов^_^