Die folgenden Klassen konnten nicht instanziiert werden: - android.support.v7.widget.Toolbar

104

Ich erstelle eine App mit dem neuen Material Design, das in Android Lollipop (5.0) verwendet wird.

Ich benutze die folgenden Anleitungen:

Nachdem ich meine Symbolleiste erstellt habe, wird folgende Fehlermeldung angezeigt: "Die folgenden Klassen konnten nicht instanziiert werden: - android.support.v7.widget.Toolbar"

Die App funktioniert gut im Telefon oder Emulator, aber der Layout-Designer von Android Studio zeigt das Layout nicht richtig an.

Hier gibt es einige Bilder:

Fehler in der Layoutvorschau von my_awesome_toolbar.xml Fehler in my_awesome_toolbar.xml

Fehler in der Layoutvorschau von activity_my.xml Fehler in activity_my.xml

Der XML-Code der Dateien:

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);
    }
}

XML-Code der Stile (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>

Im Moment benutze ich Android Studio Beta 0.8.9

firespacexyz
quelle
Versuchen Sie, Android Studio zu aktualisieren. Die letzte Version ist 0.8.14. Möglicherweise enthält es Updates zum ToolbarRendern.
Anton Holovin
Danke, die Lösung war das Update von Android Studio.
Firespacexyz
Ich hatte ein ähnliches Problem und habe es wie folgt behoben
Victor Augusto

Antworten:

96

Für Android Studio (oder IntelliJ IDEA)

Wenn in Ihrem Projekt alles in Ordnung aussieht und Sie immer noch den Fehler in all Ihren Layouts erhalten, versuchen Sie, "Caches ungültig zu machen und neu zu starten".

Warten Sie, bis Android Studio alle Caches und Indizes erstellt hat.

wie man den Cache ungültig macht und neu startet

Gbero
quelle
Danke. Diese Antwort hat mir geholfen.
Hash
Das hat mir tatsächlich geholfen. Es ist seltsam, dass wir das tun müssten, aber danke @gbero
MetaSnarf
2
Dies passierte mir normalerweise nach einem Update von Android Studio. Wahrscheinlich werden einige interne Indizes falsch ...
Gbero
1
Hinweis: Dadurch wird Ihr "lokaler Verlauf" gelöscht, sodass er etwas extrem ist. Android Studio 2.2.3 verfügt über einen Link zum Löschen des Cache im Dialogfeld für das UI-Vorschauprotokoll. Versuchen Sie dies zuerst, aber keine der beiden Lösungen hat bei mir funktioniert.
fishjd
1
Hat bei mir nicht funktioniert, ich habe die appCompat - v7 Version von 23 auf 25.3.1 aktualisiert. hat geholfen, dass es für mich
funktioniert
164

Ich habe die Datei res / values ​​/ styles.xml folgendermaßen geändert:

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

dazu:

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

und das löste das Problem.

Ang Lee
quelle
3
Nachdem die beiden anderen Lösungen fehlgeschlagen waren, funktionierte diese für mich.
Ich habe einmal mit einem Bären gerungen.
9
Was ist die Logik für diese Lösung
blackHawk
Das hat funktioniert, wow! . Ich möchte wirklich wissen warum, bitte bitte jemand erklären?
nichtig
2
Was ist mit NoActionBarin Base. Wofür ist der Ersatz Theme.AppCompat.NoActionBar?
Mario Velasco
1
Es hat bei mir funktioniert, aber wenn Sie sich den Code selbst ansehen, der es deklariert, gibt es Kommentare, die besagen, dass Sie wahrscheinlich NICHT auf Base.Theme verweisen sollten. Was auch immer in Ihrer App. Ich würde also sagen, dass dies NICHT das erwartete Verhalten ist.
JoeHz
35

Ich habe getan, was @gbero gesagt hat, und ich habe die von Studio verwendete Android-Versionsnummer von 22 auf 17 geändert und es funktioniert.

Ich verwende die Abwärtskompatibilität, um für Android Version 22 zu erstellen, aber um Ziel 17 zu erreichen (idk, wenn das richtig gesagt ist, versuche ich immer noch, dieses App-Zeug herauszufinden), so dass die Abwärtskompatibilität ausgelöst wurde, was afaik ist, was das android.support.v7.*ist. Dies ist wahrscheinlich ein Fehler mit ihrem Rendering-Code. Ich bin mir nicht sicher, ob das Löschen des Caches wie oben vorgeschlagen erforderlich ist, da das Rendern unmittelbar nach dem Ungültigmachen des Caches nicht funktioniert hat. Es hat funktioniert, nachdem ich die Version zum Rendern geändert habe. Wenn ich zurück zu Version 22 wechsle, bricht das Rendering ab, wenn ich zurück zu 17 wechsle, funktioniert es wieder.

mein Fix

Overloaded_Operator
quelle
Ich stehe vor dem gleichen Problem, ich habe bereits alles getan, aber mein Problem ist noch nicht gelöst. Wie kann ich das lösen?
Atiar Talukdar
1
Entschuldigung für die späte Antwort, ich habe auf API-Version 17 abgezielt. Wenn Sie auf 16 abzielen, dann wechseln Sie zu 16, 17 wäre immer noch die falsche Version. Ich hatte so viele Probleme, diese verdammte IDE zum Laufen zu bringen, dass ich gerade angefangen habe, die Kommandozeile zu benutzen. Wie bei Visual Studio sind beide weit überentwickelt und werden zu einer Belastung, nicht zu einem Werkzeug.
Overloaded_Operator
Mein Problem ist gelöst, nachdem ich die API-Ebene geändert und einige Dateien aktualisiert habe. Vielen Dank im Voraus
Atiar Talukdar
@Overloaded_Operator Wenn Ihre minSdkVersionVersion 17 ist, würde ich vorschlagen, die App auf einem Emulator mit API-Level 17 oder einem tatsächlichen Gerät mit API-Level 17 auszuführen und zu bestätigen, ob die Benutzeroberfläche wie erwartet aussieht und nicht wie in Android Studio gerendert
John
12

Ein weiterer Fehler, der den gleichen Effekt haben kann, kann das falsche Thema in der Vorschau sein. Aus irgendeinem Grund hatte ich hier ein anderes Thema ausgewählt. Nach der Auswahl meines AppTheme hat es wieder gut funktioniert:

Layoutoptionen

Björn Kechel
quelle
Das hat bei mir funktioniert. Aber woher wissen wir, welches Thema wir auswählen sollen? Ich bin Anfänger zu Android
Menuka Ishan
1
Sie sollten dasselbe Thema auswählen, das Sie für die Aktivität angegeben haben, die die Layoutdatei verwendet. Es wird oft in der AndroidManifest.xml festgelegt und in res / values ​​/ styles.xml oder res / values ​​/ theme.xml definiert
Björn Kechel
Vielen Dank :) In meiner Test-App befindet sich keine theme.xml, aber das Thema war in AndroidManifest.xml. Aber ich kann nicht anders, als mich zu fragen, warum zum Teufel sie die Möglichkeit geben, es zu ändern, wenn es einen Fehler gibt? Wenn es in XML bearbeitet werden soll, warum nur dort richtig anzeigen, wie Text, aber nicht als Option zum Ändern eines Themas? Ein Anfänger würde irreführen
Menuka Ishan
1
Sie sollten wahrscheinlich die Entwicklerdokumente ein wenig durchlesen: developer.android.com/guide/topics/ui/themes.html Abgesehen von den Themen decken sie die meisten Dinge ab, die Anfänger benötigen.
Björn Kechel
9

Es tut mir leid, wenn ich mir selbst antworte, aber schließlich bestand die Lösung meines Problems darin, Android Studio von Canary Channel auf die neue Version 0.8.14 zu aktualisieren: http://tools.android.com/recent/

Nach dem Update ist das Problem behoben:

Nach dem Update ist das Problem behoben

Ich lasse diese Frage hier für diejenigen, die dieses Problem in Zukunft haben.

firespacexyz
quelle
11
Nein, ich bin auf Android Studio 1.2 RC 2 und erhalte immer noch diesen Fehler.
IgorGanapolsky
Siehe meine Antwort unten @IgorGanapolsky
gbero
Ich bin auf Android Studio 2.2 und ich bin immer noch das Problem
Ab
5
  1. Projekt reinigen
  2. Projekt neu erstellen
  3. Gradle synchronisieren

es funktioniert für mich

Taioli Francesco
quelle
5

Ich habe getan, was @ang_lee gesagt hat, und diese Zeile zum Stil des App-Themas hinzugefügt:

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

Ich benutze Version 26.0.1:

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

Bauwerkzeuge:

buildToolsVersion "26.0.1"
AymAn AbuOmar
quelle
Ich musste auch folgendes hinzufügen:<item name="windowNoTitle">true</item
Mario Velasco
2

Ich hatte den gleichen Fehler auf meinem Android Studio-Bildschirm, als ich mein Projekt vorbereiten wollte. Ich behebe das Problem folgendermaßen:

1- Ich ändere die Version von 22 auf 21. Wenn ich jedoch wieder auf Version 22 wechsle, wird das Rendering unterbrochen. Wenn ich wieder auf 21 wechsle, funktioniert es wieder. Vielen Dank, dass Sie @Overloaded_Operator

Ich habe mein Android Studio aktualisiert, aber es funktioniert nicht. Vielen Dank an Salvuccio96

Kilian Agboton
quelle
1

Keiner der oben genannten Punkte hat bei mir funktioniert. Ich habe die appCompat - v7 - Version in meiner App gradle - Datei von 23 auf 25.3.1 aktualisiert. hat geholfen, dass es für mich funktioniert

Antroid
quelle
1

Suchen Sie die Datei styles.xml im Ordner app / res / values.

Das übergeordnete Attribut des Stils könnte "Base" fehlen. Es sollte als beginnen

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

Ich hatte den gleichen Fehler. Irgendwann bekam ich den Hinweis, dass ein Plugin veraltet war:

Fehlerdialog

Nachdem ich aktualisiert habe, ist das Problem behoben.

James Moore
quelle
0

Die obigen Lösungen haben mir nicht geholfen. Ich habe 2 erste Schritte von diesem Link versucht . Hat gut für mich funktioniert. Aber vergiss es nicht

import com.melnykov.fab.FloatingActionButton; 

anstatt

import android.support.design.widget.FloatingActionButton;

in Ihrer MainActivity.java

WishMaster
quelle
0

Ich benutze Android Studio 2.3.3: - Open styles.xml - Android Studio zeigt oben rechts eine Benachrichtigung mit zwei Optionen an: "Editor öffnen" und "Benachrichtigung ausblenden". - Klicken Sie auf "Editor öffnen". - Klicken Sie unter "Übergeordnetes Thema" auf "Alle Themen anzeigen". - Wählen Sie ein beliebiges Thema aus, das mit AppCompat beginnt. (Ich habe AppComat.DayNight verwendet.)

NB: Wenn Ihre Titelleiste verschwindet, müssen Sie AppCompatActivity anstelle von Activity erweitern.

Alles Gute!

Norman Pilusa
quelle
0

Ich hatte das gleiche Problem für eine der Aktivitäten in meiner App. Eine der Ursachen für dieses Problem ist, dass sich das Thema im Themeneditor möglicherweise von dem in der Datei 'styles.xml' definierten Thema unterscheidet. Ändern Sie das Thema im Themeneditor zu Ihrem 'Apptheme' oder Ihrem benutzerdefinierten Thema (falls Sie es definiert haben). Dadurch wurde mein Problem behoben.

WizWarrior
quelle
0

Mein Problem wurde auch durch Ändern in styles.xml gelöst

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