0

I am trying to implement a slide menu in android with navigation drawer. But it is giving me an exception at the point of inflating the navigation view. Why am I getting this exception?

Here is my code:

MainActivity.java

        package com.works.vipul.navigationview;
        import android.support.design.widget.NavigationView;
        import android.support.v4.widget.DrawerLayout;
        import android.support.v7.app.ActionBarDrawerToggle;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.support.v7.widget.Toolbar;
        import android.view.Menu;
        import android.view.MenuItem;
        import android.view.View;
        import android.widget.Toast;

        public class MainActivity extends AppCompatActivity {
            private Toolbar toolbar;
            private NavigationView navigationView;
            private DrawerLayout drawerLayout;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                toolbar = (Toolbar) findViewById(R.id.toolbar); // Attaching the layout to the toolbar object
                setSupportActionBar(toolbar);
                //Initializing NavigationView
                navigationView = (NavigationView) findViewById(R.id.navigation_view);

                //Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
                navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

                    // This method will trigger on item Click of navigation menu




                  @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {


                        //Checking if the item is in checked state or not, if not make it in checked state
                        if (menuItem.isChecked()) menuItem.setChecked(false);
                        else menuItem.setChecked(true);

                        //Closing drawer on item click
                        drawerLayout.closeDrawers();

                        //Check to see which item was being clicked and perform appropriate action
                        switch (menuItem.getItemId()) {


                            //Replacing the main content with ContentFragment Which is our Inbox View;
                            case R.id.inbox:
                                Toast.makeText(getApplicationContext(), "Inbox Selected", Toast.LENGTH_SHORT).show();
                                ContentFragment fragment = new ContentFragment();
                                android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                                fragmentTransaction.replace(R.id.frame, fragment);
                                fragmentTransaction.commit();
                                return true;

                            // For rest of the options we just show a toast on click

                            case R.id.starred:
                                Toast.makeText(getApplicationContext(), "Stared Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.sent_mail:
                                Toast.makeText(getApplicationContext(), "Send Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.drafts:
                                Toast.makeText(getApplicationContext(), "Drafts Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.allmail:
                                Toast.makeText(getApplicationContext(), "All Mail Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.trash:
                                Toast.makeText(getApplicationContext(), "Trash Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.spam:
                                Toast.makeText(getApplicationContext(), "Spam Selected", Toast.LENGTH_SHORT).show();
                                return true;
                            default:
                                Toast.makeText(getApplicationContext(), "Somethings Wrong", Toast.LENGTH_SHORT).show();
                                return true;

                        }
                    }
                });





                // Initializing Drawer Layout and ActionBarToggle
                drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
               ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.openDrawer, R.string.closeDrawer) {

                    @Override
                    public void onDrawerClosed(View drawerView) {
                        // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
                        super.onDrawerClosed(drawerView);
                    }





                    @Override
                    public void onDrawerOpened(View drawerView) {
                        // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank

                        super.onDrawerOpened(drawerView);
                    }
                };

                //Setting the actionbarToggle to drawer layout
                drawerLayout.setDrawerListener(actionBarDrawerToggle);

                //calling sync state is necessay or else your hamburger icon wont show up
                actionBarDrawerToggle.syncState();


            }





            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.menu_main, menu);
                return true;
            }




            @Override
            public boolean onOptionsItemSelected(MenuItem item) {
                // Handle action bar item clicks here. The action bar will
                // automatically handle clicks on the Home/Up button, so long
                // as you specify a parent activity in AndroidManifest.xml.
                int id = item.getItemId();

                //noinspection SimplifiableIfStatement
                if (id == R.id.action_settings) {
                    return true;
                }

                return super.onOptionsItemSelected(item);
            }

        }

ContentFragment.java

        package com.works.vipul.navigationview;

        import android.app.Fragment;
        import android.os.Bundle;
        import android.support.annotation.Nullable;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;

        /**
         * Created by Shiv on 8/7/2015.
         */
        public class ContentFragment extends android.support.v4.app.Fragment {






            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View v = inflater.inflate(R.layout.content_fragment,container,false);
                return v;
            }
        }

Here are the layout files:

activity_main.xml

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".MainActivity">

        <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:orientation="vertical"
            >
            <include
                android:id="@+id/toolbar"
                layout="@layout/tool_bar"
                />
            <FrameLayout
                android:id="@+id/frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </FrameLayout>

        </LinearLayout>

        <android.support.design.widget.NavigationView
            android:id="@+id/navigation_view"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="start"
            app:headerLayout="@layout/header"
            app:menu="@menu/drawer"
            />
    </android.support.v4.widget.DrawerLayout>

content_fragment.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".MainActivity">

        <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:orientation="vertical"
            >
            <include
                android:id="@+id/toolbar"
                layout="@layout/tool_bar"
                />
            <FrameLayout
                android:id="@+id/frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </FrameLayout>

        </LinearLayout>

        <android.support.design.widget.NavigationView
            android:id="@+id/navigation_view"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="start"
            app:headerLayout="@layout/header"
            app:menu="@menu/drawer"
            />
    </android.support.v4.widget.DrawerLayout>

header.xml

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="190dp"
        android:background="@drawable/background_material"
        android:orientation="vertical"
        >

        <de.hdodenhof.circleimageview.CircleImageView
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/profile_image"
            android:layout_width="76dp"
            android:layout_height="76dp"
            android:src="@drawable/profile"
            app:border_color="#FF000000"
            android:layout_marginLeft="24dp"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginStart="24dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vipul Bansal"
            android:textSize="14sp"
            android:textColor="#FFF"
            android:textStyle="bold"
            android:gravity="left"
            android:paddingBottom="4dp"
            android:id="@+id/username"
            android:layout_above="@+id/email"
            android:layout_alignLeft="@+id/profile_image"
            android:layout_alignStart="@+id/profile_image" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="vipulbansal59@yahoo.in"
            android:id="@+id/email"
            android:gravity="left"
            android:layout_marginBottom="8dp"
            android:textSize="14sp"
            android:textColor="#fff"
            android:layout_alignParentBottom="true"
            android:layout_alignLeft="@+id/username"
            android:layout_alignStart="@+id/username" />

    </RelativeLayout>

tool_bar.xml

         <android.support.v7.widget.Toolbar             xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?android:attr/actionBarSize"
            android:background="@color/PrimaryColor" />

Here is the exception:

                          08-07 21:46:39.851  16520-16520/com.works.vipul.navigationview E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.works.vipul.navigationview, PID: 16520
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.works.vipul.navigationview/com.works.vipul.navigationview.MainActivity}: android.view.InflateException: Binary XML file line #28: Error inflating class android.support.design.widget.NavigationView
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)
                at android.app.ActivityThread.access$900(ActivityThread.java:174)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:146)
                at android.app.ActivityThread.main(ActivityThread.java:5756)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class android.support.design.widget.NavigationView
                at android.view.LayoutInflater.createView(LayoutInflater.java:626)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
                at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
                at com.works.vipul.navigationview.MainActivity.onCreate(MainActivity.java:22)
                at android.app.Activity.performCreate(Activity.java:5619)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512)
        at       android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)
        at android.app.ActivityThread.access$900(ActivityThread.java:174)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5756)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
        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:423)
        at android.view.LayoutInflater.createView(LayoutInflater.java:600)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
        at com.works.vipul.navigationview.MainActivity.onCreate(MainActivity.java:22)
        at android.app.Activity.performCreate(Activity.java:5619)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512)
        at                android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)
        at android.app.ActivityThread.access$900(ActivityThread.java:174)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5756)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class de.hdodenhof.circleimageview.CircleImageView
        at android.view.LayoutInflater.createView(LayoutInflater.java:626)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
        at android.support.design.internal.NavigationMenuPresenter.inflateHeaderView(NavigationMenuPresenter.java:184)
        at android.support.design.widget.NavigationView.inflateHeaderView(NavigationView.java:227)
        at android.support.design.widget.NavigationView.<init>(NavigationView.java:152)
        at android.support.design.widget.NavigationView.<init>(NavigationView.java:88)
        at java.lang.reflect.Constructor.constructNative(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at android.view.LayoutInflater.createView(LayoutInflater.java:600)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
        at com.works.vipul.navigationview.MainActivity.onCreate(MainActivity.java:22)
        at android.app.Activity.performCreate(Activity.java:5619)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)
        at android.app.ActivityThread.access$900(ActivityThread.java:174)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5756)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
        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:423)
        at android.view.LayoutInflater.createView(LayoutInflater.java:600)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
        at android.support.design.internal.NavigationMenuPresenter.inflateHeaderView(NavigationMenuPresenter.java:184)
        at android.support.design.widget.NavigationView.inflateHeaderView(NavigationView.java:227)
        at android.support.design.widget.NavigationView.<init>(NavigationView.java:152)
        at android.support.design.widget.NavigationView.<init>(NavigationView.java:88)
        at java.lang.reflect.Constructor.constructNative(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at android.view.LayoutInflater.createView(LayoutInflater.java:600)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
        at com.works.vipul.navigationview.MainActivity.onCreate(MainActivity.java:22)
        at android.app.Activity.performCreate(Activity.java:5619)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)
        at android.app.ActivityThread.access$900(ActivityThread.java:174)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5756)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.OutOfMemoryError
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:738)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:563)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:889)
        at android.content.res.Resources.loadDrawable(Resources.java:3471)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
        at android.widget.ImageView.<init>(ImageVi
        08-07 21:46:41.911  16520-16520/com.works.vipul.navigationview I/Process﹕ Sending signal. PID: 16520 SIG: 9

              

What is the reason for exception in the navigation view?

Eliasz Kubala
  • 3,836
  • 1
  • 23
  • 28
vipul bansal
  • 91
  • 1
  • 10

2 Answers2

0

"InflateException: Binary XML file line #28: Error inflating class android.support.design.widget.NavigationView" , meaning it can not find navigation view inside its code domain, so that it can not inflate it.

Reference linking mistake on your side may be. Please check your gradle files. You may need seperate library for NavigationView, only including android support v7 wont be enough. or you could check here

dumb_terminal
  • 1,815
  • 1
  • 16
  • 27
  • I have used 'com.android.support:design:22.2.0 library too – vipul bansal Aug 09 '15 at 07:24
  • This is my gradle: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'de.hdodenhof:circleimageview:1.3.0' compile 'com.android.support:design:22.2.0' } – vipul bansal Aug 09 '15 at 07:26
0

its in cause of

Caused by: java.lang.OutOfMemoryError

check bitmap in your de.hdodenhof.circleimageview.CircleImageView

ant
  • 397
  • 1
  • 5
  • 19