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

104

Je crée une application avec le nouveau Material Design utilisé dans Android Lollipop (5.0).

J'utilise les guides suivants:

Après avoir créé ma barre d'outils, je reçois cette erreur: "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 mise en page d'Android Studio n'affiche pas correctement la mise en page.

Voici quelques images:

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

Erreur dans l'aperçu de la mise en page activity_my.xml erreur dans 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 (valeurs / 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

firespacexyz
la source
Essayez de mettre à jour le studio Android. La dernière version est la 0.8.14. Il peut avoir des mises à jour pour le Toolbarrendu.
Anton Holovin
Merci, la solution était de mettre à jour Android Studio.
firespacexyz
J'ai eu un problème similaire et résolu en suivant ceci: stackoverflow.com/a/33903057/1214729
Victor Augusto

Réponses:

96

Pour Android Studio (ou IntelliJ IDEA),

Si tout semble correct dans votre projet et que vous recevez toujours l'erreur dans toutes vos mises en page, essayez de «Invalider les caches et redémarrer».

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

comment invalider le cache et redémarrer

gbero
la source
Merci, cette réponse m'a aidé.
hash
cela m'a vraiment aidé ... c'est bizarre que nous devions le faire mais merci @gbero
MetaSnarf
2
cela m'est arrivé généralement après une mise à jour d'Android Studio. Probablement certains index internes se
révèlent
1
Remarque: cela supprimera votre «histoire locale», donc c'est un peu extrême. Android Studio 2.2.3 a un lien `` vider le cache '' dans la boîte de dialogue du journal d'aperçu de l'interface utilisateur, essayez d'abord, mais aucune des solutions n'a fonctionné pour moi.
fishjd
1
Cela n'a pas fonctionné pour moi, j'ai mis à jour la version appCompat - v7 de 23 à 25.3.1. aidé à le faire fonctionner pour moi
Antroid
164

J'ai changé le fichier res / values ​​/ styles.xml 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.

Ang Lee
la source
3
Après l'échec des deux autres solutions, celle-ci a fonctionné pour moi.
J'ai combattu un ours une fois.
9
Quelle est la logique de cette solution
blackHawk
Cela a fonctionné wow! . Je veux vraiment savoir pourquoi, s'il vous plaît, quelqu'un se soucie d'expliquer?
annulé le
2
Et NoActionBardans Base. À quoi sert le remplacement Theme.AppCompat.NoActionBar?
Mario Velasco le
1
Cela a fonctionné pour moi, mais si vous regardez le code lui-même qui le déclare, il y a des commentaires qui disent que vous ne devriez probablement PAS faire référence à Base.Theme.Wthing dans votre application. Donc je dirais que ce n'est PAS le comportement attendu.
JoeHz
35

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

J'utilise la compatibilité ascendante pour construire pour Android ver 22 mais pour cibler 17 (idk si cela est correctement dit, j'essaie toujours de comprendre ce truc de l'application), ce qui a déclenché la compatibilité ascendante, ce qui est afaik android.support.v7.*. C'est probablement un bug avec leur code de rendu. Je ne sais pas si la suppression du cache comme suggéré ci-dessus était nécessaire car le rendu ne fonctionnait pas juste après l'invalidation du cache, il a commencé à fonctionner après avoir changé la version à rendre. Si je reviens à la version 22, le rendu s'arrête, si je repasse en 17, cela fonctionne à nouveau.

ma solution

Overloaded_Operator
la source
Je suis confronté au même problème, j'ai déjà tout fait, mais mon problème n'est pas encore résolu. Comment puis-je le résoudre?
Atiar Talukdar
1
Désolé pour la réponse tardive, je ciblais la version 17 de l'API, si vous ciblez, disons 16, alors passer à 16, 17 serait toujours la mauvaise version. J'ai eu tellement de mal à faire fonctionner ce foutu IDE que je viens de commencer à utiliser la ligne de commande. Même chose avec Visual Studio, ils sont tous deux sur-conçus et ils deviennent un fardeau, pas un outil.
Overloaded_Operator
Mon problème est résolu, après avoir changé le niveau d'API et mis à jour certains fichiers. Thanks In Advance
Atiar Talukdar
@Overloaded_Operator Si votre minSdkVersionversion est 17, je suggérerais d'exécuter l'application sur un émulateur avec le niveau API 17 ou un appareil réel avec le niveau API 17 et de confirmer si l'interface utilisateur ressemble à ce qui est attendu et non à ce qui est rendu dans Android Studio
John
12

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 choisi un autre thème ici. Après avoir choisi mon AppTheme, cela a bien fonctionné à nouveau:

options de mise en page

Björn Kechel
la source
Cela a fonctionné pour moi. Mais comment savons-nous quel thème choisir. Je suis débutant sur Android
Menuka Ishan
1
Vous devez choisir le même thème que celui que vous avez spécifié pour l'activité qui utilise le fichier de mise en page. Il est souvent défini dans le fichier AndroidManifest.xml et défini dans res / values ​​/ styles.xml ou res / values ​​/ themes.xml
Björn Kechel
Merci :) Il n'y a pas de themes.xml dans mon application de test mais le thème était dans AndroidManifest.xml. Mais je ne peux pas m'empêcher de me demander pourquoi diable ils donnent l'option de le changer, si ça va donner une erreur? S'il doit être édité en xml, pourquoi ne le montrer qu'à droite, comme du texte, mais pas comme une option pour changer un thème? Un débutant serait égaré
Menuka Ishan
1
Vous devriez probablement lire un peu la documentation du développeur: developer.android.com/guide/topics/ui/themes.html En plus des thèmes, ils couvrent la plupart des choses dont un débutant a besoin.
Björn Kechel
9

Désolé si je me réponds, mais enfin, la solution de mon problème a été de mettre à jour Android Studio vers la nouvelle version 0.8.14 par Canary Channel: http://tools.android.com/recent/

Après la mise à jour, le problème a disparu:

Après la mise à jour, le problème a disparu

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

firespacexyz
la source
11
Non, je suis sur Android Studio 1.2 RC 2 et j'obtiens toujours cette erreur.
IgorGanapolsky
Voir ma réponse ci-dessous @IgorGanapolsky
gbero
Je suis sur Android 2.2 et studio je reçois toujours le problème
Ab
5
  1. Projet propre
  2. Projet de reconstruction
  3. Synchroniser Gradle

ça marche pour moi

Taioli Francesco
la source
5

J'ai fait ce que @ang_lee a dit et j'ai également 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"
AymAn AbuOmar
la source
Je devais ajouter aussi ceci:<item name="windowNoTitle">true</item
Mario Velasco
2

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

1- Je change la version de 22 à 21. Mais si je reviens à la version 22, le rendu s'arrête, si je repasse en 21, ça marche à nouveau. Merci @Overloaded_Operator

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

kilian agboton
la source
1

rien de ce qui précède n'a fonctionné pour moi, j'ai mis à jour la version appCompat - v7 dans mon fichier gradle d'application de 23 à 25.3.1. aidé à le faire fonctionner pour moi

Antroïde
la source
1

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

L'attribut parent du style peut manquer "Base". Cela devrait commencer comme

<style name="AppTheme" parent="Base.Theme.AppCompat...
dp2050
la source
0

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

boîte de dialogue d'erreur

Après la mise à jour, le problème a disparu.

James Moore
la source
0

Les solutions ci-dessus ne m'ont pas aidé. J'ai essayé 2 premières étapes à partir de 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

WishMaster
la source
0

J'utilise Android Studio 2.3.3: - Ouvrez styles.xml - Android Studio affichera une notification en haut à droite avec deux options: "Ouvrir l'éditeur" et "Masquer la notification". - Cliquez sur "ouvrir l'éditeur" - Sous le menu déroulant du thème parent, 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'Activité.

Bonne chance!

Norman Pilusa
la source
0

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 le 'styles.xml'.changez le thème dans l'éditeur de thème à votre 'Apptheme' ou à votre thème personnalisé (si vous l'avez défini). Faire cela a résolu mon problème.

WizWarrior
la source
0

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">
abir99
la source