web-dev-qa-db-fra.com

Classe introuvable Android Support Design Widget NavigationView

Bonne journée, pouvez-vous m'aider? J'ai eu cette erreur lors de la compilation/exécution de mon code sur un émulateur. Ceci est l'exemple de tutoriel que j'avais l'habitude de faire. J'ai utilisé min Target API - 15 et compilé le dernier dégradé 'com.Android.support:design:23.0.0'

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

Erreur de code: 

AndroidRuntime: Java.lang.RuntimeException: impossible de démarrer l'activité ComponentInfo {com.eccp.projects.ecosavers.ecosavers/com.eccp.projects.ecosavers.ecosavers.activities.MainActivity.MainActivity}: Android.view.InflateException: XML binaire ligne de fichier n ° 29: Ligne de fichier XML binaire n ° 29: erreur lors du gonflage de la classe Android.support.design.widget.NavigationView 12-29 06: 43: 39.409 3448-3448/com.eccp .projects.ecosavers.ecosavers E/AndroidRuntime: sur Android.app.ActivityThread.performLaunchActivity (ActivityThread.Java:2416)

E/AndroidRuntime: Causée par: Android.view.InflateException: ligne de fichier XML binaire n ° 29: ligne de fichier XML binaire n ° 29: erreur lors du gonflage de la classe Android.support.design.widget.NavigationView

Voici mes 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>
6
RoCk Vangeance

Suivez ces étapes:

  1. Clic droit sur votre Project->Open Module Settings.
  2. Ensuite, ouvrez l'onglet Dépendances.
  3. Cliquez sur le symbole + puis sélectionnez Dépendance de la bibliothèque. Vous obtiendrez une fenêtre contextuelle appelée Choisir la dépendance de la bibliothèque.
  4. Là entrez "com.Android.support". Puis cliquez sur l'icône de recherche.

 

  1. Maintenant, sélectionnez la bibliothèque de conception. et cliquez sur OK.
20
Vignesh

Merci pour vos préoccupations, je l'apprécie. J'ai trouvé la réponse à (ma) cette question enfin.

Erreur de gonflage de la classe Android.support.design.widget.NavigationView # 28 ou # 29

La solution qui fonctionne pour moi est que vous devez faire correspondre votre support design library et votre support AppCompat Library. Dans le module gradle, 

 Locate Gradle

changer la version de gradle (le n ° de bibliothèque souhaité) Vous pouvez également trouver la dernière version de gradle dans le lien que j'ai fourni, mais je vous suggère de vérifier dans votre module gradle (La 2e image, puisqu'ils sont les premiers à mettre à jour la construction de gradle Ensuite, dans mon module de gradation - compile: ... a été mis en surbrillance, ce qui signifie qu’il existe une version plus récente, il suffit de changer le n °, par exemple, 24.0.0 compile si elle est stable, pas une prévisualisation), dans le temps moyen, le mien est 23.1.1

-> plus gradle lib- gradleplease.appspot.com

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

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

 Gradle Dependencies

:) Ça marche pour moi!

Observation (pour moi, comme j'ai changé/résolu cette erreur, la valeur 23.x.x): si votre support-design ne correspond pas à AppCompat-lib produit # 28 et si votre AppCompat ne correspond pas au support-design produit # 29 . Essayez, peut-être que j'échange le #. 

3
RoCk Vangeance

Vous obtenez cette erreur car vous avez besoin de la bibliothèque de support technique de Design.

Ouvrez le SDK Manager et téléchargez le référentiel de support Android, puis retrouvez la dernière version de la bibliothèque ici:

<Android-sdk>/extras/Android/m2repository/com/Android/support/design/23.0.1/design-23.0.1.aar

Copiez-le dans votre répertoire libs puis ajoutez la dépendance à votre build.gradle:

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile 'Android.support.design:design:23.0.1@aar'
}
0
Android Dev