Class Not Found Android Support Design Widget NavigationView

34,880

Solution 1

Follow this steps:

  1. Right Click on your Project->Open Module Settings.
  2. Then open Dependencies Tab.
  3. Click on + symbol then select Library Dependency.You will get an popup called Choose Library Dependency.
  4. There Enter "com.android.support". Then click on search icon.

  1. Now select the design library. and Click on OK.

Solution 2

Thank you for your concerns, I appreciate it. I found the answer for (my) this question at last.

Error inflating class android.support.design.widget.NavigationView #28 or #29

The solution that works for me, is that you must match your support design library and your support AppCompat Library. In the gradle module,

Locate Gradle

change the gradle version (Your desired library no. ) You can also find the latest gradle build in the link that I have given, but I suggest you check in your gradle module (The 2nd Picture, since they are first in updating the gradle build. Then in my gradle module - compile: ... has been highlighted , meaning there is a newer version, just change the no. e.g 24.0.0 compile if it is stable, not preview), in a mean time, mine is 23.1.1 .

-> more gradle lib- gradleplease.appspot.com

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'com.android.support:design:23.1.1'

Gradle Dependencies

:) It works for me!

Observation (For me, As I changed/solved this error, the value 23.x.x): if your support-design doesn't match with AppCompat-lib produces #28 and if your AppCompat doesn't match the support-design produces #29. Just try, maybe I interchange the #.

Share:
34,880
RoCkDevstack
Author by

RoCkDevstack

Not all knowing but doing my best to learn these, in-spite of my poor knowledge React Flutter WordPress Development SQL & PHP NodeJS

Updated on July 15, 2022

Comments

  • RoCkDevstack
    RoCkDevstack almost 2 years

    Good day, can you help me out. I got this error when compiling/running my code on an emulator. This is the sample tutorial I used to make. I used min Target API - 15 and compile the latest gradle 'com.android.support:design:23.0.0'

    http://www.android4devs.com/2015/06/navigation-view-material-design-support.html

    Code Error:

    AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eccp.projects.ecosavers.ecosavers/com.eccp.projects.ecosavers.ecosavers.activities.MainActivity}: android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class android.support.design.widget.NavigationView 12-29 06:43:39.409 3448-3448/com.eccp.projects.ecosavers.ecosavers E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)

    E/AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class android.support.design.widget.NavigationView

    Here are my codes: MainActivity.java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //SET my own toolbar
        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    
        mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
    
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                if (menuItem.isChecked()) menuItem.setChecked(false);
                else menuItem.setChecked(true);
    
                //Closing drawer on item click
                mDrawerlayout.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.events:
                        Toast.makeText(getApplicationContext(), "Inbox Selected", Toast.LENGTH_SHORT).show();
                        Eco_events fragment = new Eco_events();
                        android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.frame, fragment);
                        fragmentTransaction.commit();
                        return true;
    
                    //  show a toast on click
    
                    case R.id.activities:
                        Toast.makeText(getApplicationContext(), "Send 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
        mDrawerlayout = (DrawerLayout) findViewById(R.id.drawer);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerlayout, toolbar, R.string.drawerOpened, R.string.drawerOpened) {
    
            @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
        mDrawerlayout.setDrawerListener(mDrawerToggle);
    
        //calling sync state is
        mDrawerToggle.syncState();
    
    
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
    }
    

    XML: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/tool_bar"
            layout="@layout/toolbar"
            />
        <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>
    
  • RoCkDevstack
    RoCkDevstack over 8 years
    this you mean? compile 'com.android.support:design:23.0.0' I have already this lib. and gradle compiled already. :( . I will search on youtube how to post this stack trace.