Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>

Tags:

I am developing a simple android apllication and just completed the home screen. Now if the orientation of the screen changes more than two times, it is throwing the error and application is getting crashed abrubptly.

Here is my Java Class:

public class PasswordActivity extends Activity implements OnClickListener {   Button login;     Button forgot;   Button register;      private static final String PREFERENCES = "prefs";   private static final String PREFERENCES_NAME = "pref_name";    SharedPreferences settings;   private Cursor c;    @Override    public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.main);        login=(Button)findViewById(R.id.login_login);       login.setOnClickListener(this);       register=(Button)findViewById(R.id.login_register);       register.setOnClickListener(this);         }   public void onClick(View v) {   }  } 

And this is my Xml Code:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:orientation="vertical"       android:background="@drawable/listpic">    <LinearLayout      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:orientation="horizontal"     android:paddingTop="5dp"     android:paddingLeft="3dp"     android:paddingRight="3dp">        <TextView       android:layout_width="fill_parent"      android:layout_weight="0.75"      android:layout_height="wrap_content"      android:text="@string/login_user_name"      android:textStyle="bold"/>      <EditText       android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:layout_weight="0.25"      android:id="@+id/login_user_name"      android:inputType="text"/>   </LinearLayout>    <LinearLayout       android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:orientation="horizontal"      android:paddingLeft="3dp"      android:paddingRight="3dp">         <TextView        android:layout_width="fill_parent"       android:layout_weight="0.75"       android:layout_height="wrap_content"       android:text="@string/login_password"       android:textStyle="bold"/>       <EditText        android:layout_width="fill_parent"       android:layout_height="wrap_content"       android:layout_weight="0.25"       android:inputType="textPassword"       android:id="@+id/login_password"/>   </LinearLayout>    <LinearLayout       android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:orientation="horizontal"      android:paddingLeft="3dp"      android:paddingRight="3dp">         <Button        style="@style/left_button"       android:text="@string/login_submit"       android:id="@+id/login_login"/>       <Button         style="@style/right_button"        android:id="@+id/login_register"        android:text="@string/register"/>    </LinearLayout> </LinearLayout> 

Log Cat Details:

10-21 12:05:59.982: D/dalvikvm(622): GC_EXTERNAL_ALLOC freed 774 objects / 56240 bytes in 61ms 10-21 12:06:15.031: D/dalvikvm(622): GC_EXTERNAL_ALLOC freed 737 objects / 30992 bytes in 59ms 10-21 12:06:18.022: E/dalvikvm-heap(622): 7596000-byte external allocation too large for this process. 10-21 12:06:18.022: E/GraphicsJNI(622): VM won't let us allocate 7596000 bytes 10-21 12:06:18.043: D/AndroidRuntime(622): Shutting down VM 10-21 12:06:18.043: W/dalvikvm(622): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 10-21 12:06:18.092: E/AndroidRuntime(622): FATAL EXCEPTION: main 10-21 12:06:18.092: E/AndroidRuntime(622): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ravi.password/com.ravi.password.PasswordActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.app.ActivityThread.main(ActivityThread.java:4627) 10-21 12:06:18.092: E/AndroidRuntime(622):  at java.lang.reflect.Method.invokeNative(Native Method) 10-21 12:06:18.092: E/AndroidRuntime(622):  at java.lang.reflect.Method.invoke(Method.java:521) 10-21 12:06:18.092: E/AndroidRuntime(622):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 10-21 12:06:18.092: E/AndroidRuntime(622):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 10-21 12:06:18.092: E/AndroidRuntime(622):  at dalvik.system.NativeStart.main(Native Method) 10-21 12:06:18.092: E/AndroidRuntime(622): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 10-21 12:06:18.092: E/AndroidRuntime(622):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 10-21 12:06:18.092: E/AndroidRuntime(622):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.app.Activity.setContentView(Activity.java:1647) 10-21 12:06:18.092: E/AndroidRuntime(622):  at com.ravi.password.PasswordActivity.onCreate(PasswordActivity.java:34) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 10-21 12:06:18.092: E/AndroidRuntime(622):  ... 12 more 10-21 12:06:18.092: E/AndroidRuntime(622): Caused by: java.lang.reflect.InvocationTargetException 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.widget.LinearLayout.<init>(LinearLayout.java:115) 10-21 12:06:18.092: E/AndroidRuntime(622):  at java.lang.reflect.Constructor.constructNative(Native Method) 10-21 12:06:18.092: E/AndroidRuntime(622):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 10-21 12:06:18.092: E/AndroidRuntime(622):  ... 22 more 10-21 12:06:18.092: E/AndroidRuntime(622): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.Bitmap.nativeCreate(Native Method) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.Bitmap.createBitmap(Bitmap.java:468) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.Bitmap.createBitmap(Bitmap.java:435) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323) 10-21 12:06:18.092: E/AndroidRuntime(622):  at android.view.ViewGroup.<init>(ViewGroup.java:285) 10-21 12:06:18.092: E/AndroidRuntime(622):  ... 26 more  

Images used are of very small size around 5kb.

like image 398
Ravindra Avatar asked Oct 21 '12 08:10

Ravindra


2 Answers

At runtime, Android resize's images based on need (based on the screen size and resolution). It uses Bitmap's for doing the resizing internally. Which, obviously, is very memory intensive (kinda allocates memory like crazy). One quick way to fix such issues can be, that you copy all drawable files to drawable-ldpi, mdpi, hdpi folders. This way android will just pick up the files from these folders and not resize them.

Its a random kind exception, a real pain to fix.

like image 66
Siddharth Avatar answered Sep 27 '22 21:09

Siddharth


please follow background image size

for Supported device

LDPI: Portrait: 200x320px Landscape: 320x200px MDPI: Portrait: 320x480px Landscape: 480x320px HDPI: Portrait: 480x800px Landscape: 800x480px XHDPI: Portrait: 720px1280px Landscape: 1280x720px 
like image 36
Mahadev Dalavi Avatar answered Sep 27 '22 22:09

Mahadev Dalavi