java.lang.IllegalArgumentException: Sie müssen ein Theme.AppCompat-Thema (oder einen Nachkommen) mit der Designbibliothek verwenden

8

Ich versuche, "Flexible Space with Image" aus Material Design mit Hilfe dieses Tutorials zu implementieren:

Toolbar-Animation mit Android-Design-Support-Bibliothek

Aber ich bekomme diese Rendering Problem Nachricht in der Layout Vorschau:

  

Die folgenden Klassen konnten nicht instanziiert werden:

     

- android.support.design.widget.CoordinatorLayout (Offene Klasse, Ausnahme anzeigen, Cache löschen)   - android.support.design.widget.AppBarLayout (Offene Klasse, Ausnahme anzeigen, Cache löschen)

Ich habe das Theme.AppCompat -Thema auf meine Anwendung angewendet, aber es hat die Aktionsleiste und das Aussehen in jeder anderen Aktivität verschärft. Außerdem gibt es einen Fehler bei Aktionsleistenmethoden wie:

  

actionBar.setDisplayHomeAsUpEnabled (true);

Angabe des Fehlers (grob) als:

  

setDisplayHomeAsUpEnabled (boolean) wird für eine Nullobjektverweis

aufgerufen

Wenn Sie Theme.AppCompat für die gesamte Anwendung verwenden, wird der folgende Fehler im Vorschaubildschirm angezeigt:

  

Folgende Klassen konnten nicht gefunden werden:   - android.support.v7.internal.app.WindowDecorActionBar (Fix Build Path, Klasse erstellen)

Daher möchte ich Theme.AppCompat nicht für die gesamte Anwendung verwenden. Wenn Sie jedoch Theme.AppCompat für die spezifische Aktivität verwenden, für die ich den Entwurf "Flexible Fläche mit Bild" verwenden möchte, wird das zuvor angegebene Problem CoordinatorLayout und AppBarLayout nicht gelöst.

Bitte sagen Sie mir, was zu tun ist! Ich habe viele Stackoverflow-Beiträge zum selben Thema gelesen, aber sie haben nicht für mich funktioniert! Ich habe android Studio neu gestartet und meinen Cache ungültig gemacht und auch unzählige Male neu gestartet !!

Hier sind die Abhängigkeiten in meinem build.gradle

%Vor%

Das Ausführen der App auf meinem Telefon gibt mir diesen Fehler:

  

java.lang.IllegalStateException: Diese Aktivität hat bereits eine Aktion   Bar von der Fensterdekoration geliefert. Fordern Sie nicht an   Window.FEATURE_SUPPORT_ACTION_BAR und setze windowActionBar auf false in   Ihr Thema, stattdessen eine Toolbar zu verwenden.

Setzen Sie windowActionBar wie folgt auf false:

%Vor%

und dann das Ausführen der App löst diesen Fehler aus:

  

java.lang.RuntimeException: Die Aktivität konnte nicht gestartet werden   ComponentInfo {com.seven.actionbar / com.seven.actionbar.EventsDetailActivity}:   java.lang.IllegalArgumentException: AppCompat unterstützt das   Aktuelle Designmerkmale: {windowActionBar: false,   windowActionBarOverlay: false, android: windowIsFloating: false,   windowActionModeOverlay: false, windowNoTitle: false}

Hier ist das Symbolleisten-Bit aus der Datei EventsDetailsActivity.java:

%Vor%

Hier ist der Layout-Code, der dazu gehört:

%Vor%

Das ScrollView und die zugehörigen untergeordneten Elemente (hier nicht gezeigt) sind der Hauptinhalt der Seite.

Änderte auch das Thema zu:

%Vor%

Während die IllegalStateException und RuntimeException weg sind, kann ich die CoordinatorLayout nicht mehr sehen.

falsch

    
Flame of udun 16.11.2015, 18:15
quelle

3 Antworten

4

Warum müssen Sie Toolbar verwenden? Müssen Sie einige alte Android-Versionen unterstützen? Der Punkt ist, dass ein Toolbar nicht wirklich ActionBar ist. Es fehlt dir an Funktionalität und zwingt dich bestimmte Themen in deinen Aktivitäten zu verwenden. Also, wenn Sie einige ältere Versionen von Android nicht unterstützen müssen (v7.Toolbar ist für SDK 7 (Android 2.1).

Oh, und übrigens: Was versuchst du zu tun, heißt kollabierendes Toolbar-Layout. Überprüfen Sie diesen Link für das Tutorial Ссылка

P.S. Kompilieren Sie keine verschiedenen Versionen derselben Bibliothek! Tu das nicht:

%Vor%

Ändern Sie stattdessen Folgendes:

%Vor%     
RexSplode 25.11.2015 07:39
quelle
4

Was Ihr Logcat auslöst

  

java.lang.IllegalStateException: Diese Aktivität hat bereits eine Aktion   Bar von der Fensterdekoration geliefert. Fordern Sie nicht an   Window.FEATURE_SUPPORT_ACTION_BAR und setze windowActionBar auf false in   Ihr Thema, stattdessen eine Toolbar zu verwenden.

  1. Alle Ihre Designs (die eine Aktionsleiste / Toolbar haben möchten) müssen erben von Theme.AppCompat . Es gibt Varianten, einschließlich Light und NoActionBar.

Bitte lesen Sie das offizielle Dokument über AppCompat

Was sollten Sie tun

?
  1. Bitte setzen Sie parent="Theme.AppCompat.NoActionBar" anstelle von parent="Theme.AppCompat.Light "

  2. Vermeiden Sie Bibliothek duplizieren . support:appcompat wurde zweimal in Ihrem Abschnitt build.gradle aufgerufen.

Sie können ähnliche Fragetypen auf SO

überprüfen
  1. Window.FEATURE_ACTION_BAR und setze windowActionBar auf false
  2. AppCompat unterstützt die aktuelle Themenfunktionen
IntelliJ Amiya 19.11.2015 06:18
quelle
3

OK! das berühmte Toolbar Problem.

Versuchen Sie, wie es scheint, einige Änderungen an dem von Ihnen geposteten Code vorzunehmen.

1) Wenn Sie ActionBar in anderen Aktivitäten als diesem erstellen möchten, erstellen Sie einen neuen Stil für NoActionBar und fügen Sie diesen Stil zu dieser Aktivität hinzu

%Vor%

Noe in you AndroidManifest.xml , weise dieses Thema zu, so dass nur EventsDetailsActivity nicht ActionBar hat, aber Pause wird.

%Vor%

2) ScrollView funktioniert nicht gut mit CoordinatorLayout . Um "Flexibler Raum mit Bild" zu erreichen, versuchen Sie es NestedScrollView anstelle von ScrollView . Dadurch erhalten Sie einen angemessenen Animationseffekt.

3) Ändere das ActionBar mit einem Toolbar in deinem EventsDetailsActivity .

Ich hoffe, es hilft.

    
Pavitra Kansara 23.11.2015 22:25
quelle