40

Here is my code:

input.xml (layout folder)

<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;

    }

}

I can run this code properly, but when I changed the orientation of the Emulator, it gives the following error.

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

Basically, the error is targeting to the below place:

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

This only happens in Emulator, not in phone. What is wrong here?

12 Answers 12

98

Check your drawable/background_main i.e. the background image of your root layout - the VM runs out of memory when decoding the bitmap. Make the image dimensions smaller.

Sign up to request clarification or add additional context in comments.

4 Comments

Hello, did you mean reduce the bitmap size?
Yes, reduce bitmap size by reducing image dimensions i.e. resolution.
had same problem, my in case, my img was about 2mb size about 4000x3000 px
This answer helped me.. actually I was using drawable resource for rounded corner that was causing my app crash.. using this answer I got a clue and found exact problem
12

My problem was that I had a shape with a <solid> with color ?selectableItemBackground. Yes it is dumb and a specific case, but posting it here for people with the same mistake.

Comments

8

The problem occurs because the *drawable/background_main* has a high resolution image. So when it loads then the VM runs out of memory .

So best way is to reduce it size or resolution.

Comments

3

You are using this layout in fragment not in Activity.And also there is another exception OutOfMemory your background image is very large try to reduce it..

Comments

3

for those who have this problem: there are some cases that may lead app to crash. I have seen these the most.

1- using ?selectableItemBackground may cause this problem.

2- if using large images (or else) that make the application errors like failed to allocate... this happens when hardware accelerated is on. you can set it to off in this case and using large-heap in manifest(application element)

3- if you have a drawable that is in v-21(for example) branch and you are running app on below 21, it can cause this problem too.

good luck!

https://stacklearn.ir

Comments

2

Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget may be the real culprit here. Try using smaller image to see if it is a memory-related issue. Check out these links for examples of similar issues:

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

Comments

1

I've solved the same problem by reducing dimension of .png buttons in all xml files

Comments

1

Try using images of different resolutions such as mdpi,hdpi,xhdpi if only using higher resolution images it might cause a crash in low resolution phones

Comments

1

in my case i was using drawable from

drawable-v24

when i moved it to

drawable

it worked for me.

Comments

0

Well, in my case the answer was in xml design, conflict android:backgroundTint and android:tint

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" />

and it's ok but 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"/>

I hope I have help you,

Regards

Comments

0

In my case I was getting illogical class inflation exceptions, after digging for a while I found that the error was caused due to deprecated code blocks related to android framework itself.

Comments

0

Be cautious when using SVG images, as their rendering size can sometimes be too large, leading to errors.

Too large SVG images contain a lot of lines of xml code.

Try to replace it with some PNG

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.