web-dev-qa-db-fra.com

Les classes suivantes n'ont pas pu être instanciées: - Android.support.v7.widget.Toolbar

Je crée une application avec le nouveau design de matériau utilisé dans Android Lollipop (5.0).

J'utilise les guides suivants:

Après avoir créé ma barre d'outils, le message d'erreur suivant s'affiche: "Les classes suivantes n'ont pas pu être instanciées: - Android.support.v7.widget.Toolbar"

L'application fonctionne bien dans le téléphone ou l'émulateur, mais le concepteur de la disposition d'Android Studio n'affiche pas correctement la disposition.

Voici quelques images:

Erreur dans l'aperçu de la mise en page my_awesome_toolbar.xml error in my_awesome_toolbar.xml

Erreur dans l'aperçu de la disposition activity_my.xml error in activity_my.xml

Le code XML des fichiers:

my_awesome_toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>

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

activity_my.xml:

<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"
            Android:id="@+id/root"
            tools:context="com.myapp.test.MyActivity"
            Android:orientation="horizontal">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/my_awesome_toolbar"
        />
    <!-- Rest of layout -->
</RelativeLayout>

MyActivity.Java:

package com.myapp.test;

import Android.os.Bundle;
import Android.support.v7.app.ActionBarActivity;
import Android.support.v7.widget.Toolbar;
import Android.view.Menu;
import Android.view.MenuItem;


public class MyActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, 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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

code XML des styles (values ​​/ styles.xml):

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/dark_blue</item>
        <item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>
    </style>

    <!-- Style Title -->
    <style name="Title">
        <item name="Android:textColor">@color/white</item>
        <item name="Android:textStyle">bold</item>
        <item name="Android:textSize">16sp</item>
    </style>

    <style name="AppTheme.OverflowButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
        <item name="Android:src">@drawable/overflow_icon</item>
    </style>
</resources>

Pour le moment, j'utilise Android Studio Beta 0.8.9

99
FirestormXYZ

Pour Android Studio (ou IntelliJ IDEA), 

Si tout se passe bien dans votre projet et que l'erreur persiste dans toutes vos mises en page, essayez d '"Invalider les caches et redémarrer".

Attendez qu'Android Studio ait terminé de créer tous les caches et index.

how to invalidate cache & restart

91
gbero

J'ai changé le fichier res/values ​​/ styles.xml à partir de ceci:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

pour ça:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">

et cela a résolu le problème.

161
Ang Lee

J'ai fait ce que @gbero a dit et j'ai changé le numéro de version d'Android utilisé par Studio de 22 à 17 et cela fonctionne.

J'utilise la compatibilité ascendante pour construire pour Android version 22 mais pour cibler 17 (idk si c'est bien dit, j'essaie toujours de comprendre cette application), ce qui a déclenché la compatibilité ascendante, qui est ce que le Android.support.v7.* est. C'est probablement un bug avec leur code de rendu. Pas sûr qu'il soit nécessaire d'effacer le cache comme suggéré ci-dessus car le rendu ne fonctionnait pas juste après l'invalidation du cache, il a commencé à fonctionner après que j'ai changé la version à rendre. Si je repasse en version 22, le rendu s'interrompt, si je repasse en 17, cela fonctionne à nouveau.

my fix

35

De: https://stackoverflow.com/a/29989542/4123403

  1. Projet propre
  2. Reconstruire le projet
  3. Gradient de synchronisation

Cela a fait le tour pour moi.

13
Eric B.

Une autre erreur qui peut avoir le même effet peut être le mauvais thème dans l'aperçu ..__ Pour une raison quelconque, j'avais sélectionné un autre thème ici. Après avoir choisi mon AppTheme, cela a fonctionné à nouveau:

 layout options

12
Björn Kechel

Désolé si je réponds moi-même, mais finalement, la solution de mon problème était de mettre à jour Android Studio avec la nouvelle version 0.8.14 de Canary Channel: http://tools.Android.com/recent/

Après la mise à jour, le problème est parti:

After the update, the problem is gone

Je laisse cette question ici pour ceux qui ont ce problème à l'avenir.

9
FirestormXYZ

J'ai fait ce que @ang_lee a dit et j'ai ajouté cette ligne au style de thème de l'application:

<item name="windowActionBar">false</item>

j'utilise la version 26.0.1: 

com.Android.support:design:26.0.1
com.Android.support:appcompat-v7:26.0.1

outils de construction:

buildToolsVersion "26.0.1"
5
AymAn AbuOmar
  1. Projet propre
  2. Reconstruire le projet
  3. Gradient de synchronisation

ça marche pour moi

5
Taioli Francesco

J'ai eu la même erreur sur mon écran Android Studio lorsque je voulais présenter mon projet. Je résous le problème de cette manière:

1- J'ai changé la version de 22 à 21. Mais si je reviens à la version 22, le rendu est cassé, si je repasse à 21, cela fonctionne à nouveau. Merci @Overloaded_Operator

J'ai mis à jour mon Android Studio mais ne fonctionne pas. Merci @ Salvuccio96

2
kilian agboton

aucune des solutions ci-dessus n’a fonctionné pour moi. a aidé à le faire fonctionner pour moi 

1
antroid

Trouvez styles.xml dans le dossier app/res/values.

L'attribut parent du style peut être manquant "Base" . Il devrait commencer par

<style name="AppTheme" parent="Base.Theme.AppCompat...
0
dprojects2050

Les solutions ci-dessus ne m'ont pas aidé. J'ai essayé 2 premiers pas depuis ce lien . A bien fonctionné pour moi. Mais n'oubliez pas de 

import com.melnykov.fab.FloatingActionButton; 

au lieu de 

import Android.support.design.widget.FloatingActionButton;

dans votre MainActivity.Java

0
WishMaster

Mon problème a également été résolu en changeant dans styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
0
abir99

J'ai eu la même erreur. Finalement, j'ai reçu cette notification qu'un plugin était obsolète:

 error dialog

Après avoir mis à jour, le problème est parti.

0
James Moore

J'ai eu le même problème pour l'une des activités de mon application. L'une des causes de ce problème est que le thème dans l'éditeur de thème peut être différent du thème défini dans 'styles.xml'. à votre "Apptheme" ou votre thème défini personnalisé (si vous avez défini). Faire cela a résolu mon problème.

0
V. Tank

J'utilise Android studio 2.3.3. ouvrir l'éditeur "- Dans le menu déroulant parent de thème, cliquez sur Afficher tous les thèmes - Sélectionnez un thème commençant par AppCompat ... (j'ai utilisé AppComat.DayNight)

NB: Si votre barre de titre disparaît, vous devez étendre AppCompatActivity au lieu d’Activity.

Bonne chance!

0
Norman Pilusa