java.lang.IllegalArgumentException: AppCompat unterstützt die aktuellen Designfunktionen nicht


109

Ich habe versucht, ein Projekt von Eclipse auf Android Studio zu migrieren. Endlich kann ich es ausführen, aber zu einem bestimmten Zeitpunkt habe ich diese Ausnahme erhalten und in Google nichts darüber gefunden:

04-22 00:08:15.484    9891-9891/hu.illion.kwindoo E/AndroidRuntime FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{hu.illion.kwindoo/hu.illion.kwindoo.activity.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...    
Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
    at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
    at hu.illion.kwindoo.activity.MainActivity.onCreate(MainActivity.java:73)
    at android.app.Activity.performCreate(Activity.java:5047)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...

73. Linie von MainActivity ist:

setContentView(R.layout.activity_main);

Bitte beraten Sie mich, wenn Sie können.


Noch nie gesehen, aber vielleicht verwenden Sie eine Funktion in R.layout.activity_main, für die eine andere Version der Android-API erforderlich ist? - Obwohl Android Studio Ihnen gerne über diese Dinge erzählt ... Goodluck
Gready

Veröffentlichen Sie Ihre theme.xml oder style.xml und die activity_main.xml
Charaf Eddine Mechalikh

Können Sie hier auch Ihre .gradle-Dateien ablegen? Sie sind wahrscheinlich auf einen alten Appcompat angewiesen?
RaphMclee

Antworten:


233

Alternative zu @ sbaars Antwort,

halten windowActionBarzu falseund fügen Sie windowNoTitleso gut und setzen Sie ihn auf true.

dh

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

4
Ich musste dies mit meiner App tun, nachdem ich heute auf die neueste App (22.1) aktualisiert hatte. Das ist alles, was ich geändert habe und meine App funktioniert jetzt wieder.
SteelBytes

4
Das ist seltsam, funktioniert aber nach dem Wechsel von ActionBarActivity -> AppCompatActivity
pawegio

5
Diese Antwort hat bei mir nicht funktioniert. Nur die @ sbaar-Antwort hat funktioniert. Ihr Thema sollte erben von: Theme.AppCompat.NoActionBar zusätzlich zu den folgenden: <item name = "windowActionBar"> false </ item> und <item name = "windowNoTitle"> true </ item>
Blueware

1
Dies funktioniert für Themen, die keinen alternativen NoActionBarStil haben. In meinem Beispiel funktioniert es fürTheme.AppCompat.Light.Dialog
Dobridog

1
Dies funktioniert beim Erben von Theme.AppComapt.NoActionBar. Perfekt!
Tariq

41

Entfernen

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

Stellen Sie dann sicher, dass Sie von einem .NoActionBar-Thema erben, und legen Sie dann Ihre Symbolleiste wie gewohnt fest.


1
Und warum sollte ich etwas ändern? Dieses Projekt war monatelang sehr gut mit Eclipse.
Adam Varhegyi

3
Denn vor einigen Stunden hat Google die Version 22.1 der Support-Bibliothek veröffentlicht, die dieses Problem in Ihrem Projekt (und auch in meinem) verursacht hat. Es ist nur ein Zufall, nicht wegen der Migration zu Android Studio.
Walmart

3
Für mich war das Erben des Themas von .NoActionBar der Schlüssel, es war keine Elemententfernung erforderlich.
Sergey Aldoukhov

30

Stellen Sie sicher, dass Ihr Thema Kind von ist Theme.AppCompat.NoActionBar, dann in styles.xml:

<style name="MyMaterialTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="windowNoTitle">true</item>
        ...
</style>

Übrigens ist es eine neue Ausgabe für Support Library 22.1.


@ QadirHussain, nein, nicht.
Anggrayudi H

AppCompat.NoActionBar hat alle meine textView Farbe Weiß Theme.AppCompat.Light.NoActionBar stattdessen verwenden
Hitesh Sahu


16

Überprüfen Sie, ob Sie setContentView()nach super.onCreate()und nicht vorher anrufen . Das hat in meinem Fall geholfen.


Hatte windowNoTitle und windowActionBar, funktionierte aber immer noch nicht. Das hat es für mich behoben. Vielen Dank!
avb


3

In meinem Fall habe ich nicht zu .NoActionBar Theme gewechselt. Ich entferne nur das Android-Präfix von diesem Artikel.

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

und der Fehler verschwindet.


erwähne es nicht. Ich freue mich über Ihren Kommentar.
Setmax

3

Stelle sicher das

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

sind an der Spitze von allem, was für mich funktioniert .... viel Glück



1

Ich habe das Problem durch meine Hauptaktivität zur Erweiterung von AppCompatActivity gelöst :)


1

Ich hatte das gleiche Problem etwas, entfernt android:von meiner syles.xml wie unten;

 <!-- caused crash -->
 <item name="android:windowActionBar">false</item>
 <item name="android:windowNoTitle">true</item>

 <!-- didn't cause crash -->
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>

0

Ich hatte das gleiche Problem, als ich die Bibliotheksversion von 22.0.0 auf 22.1.1 aktualisiert und behoben habe, indem ich auf die vorherige Version zurückgegriffen habe: com.android.support:appcompat-v7:22.0.0 und wieder ActionBarActivity verwendet habe. nicht AppCompatActivity in meinen Aktivitätsklassen, wie in der neueren Version der Kompatibilitätsbibliothek erforderlich. Ich werde es später noch einmal versuchen.


0

Verwenden Sie dies einfach in Ihrer style.xml. Es ist keine weitere Bearbeitung erforderlich

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

<!-- theme customizations -->

<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

Fügen Sie der Aktivitätsdatei nichts hinzu. Bitte lassen Sie es

public class Main extends ActionBarActivity {

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

 }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, 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);
}

 }

0

In der Java-Klasse wechseln Sie Main extends ActionBarActivityzu Main extends Activity. Es hat bei mir funktioniert.


0

In meinem Fall suche ich nach einer Antwort von @rewrihitesh und stelle fest, dass ich die Reihenfolge der Elemente umgekehrt habe . Wechsel von

setContentView(R.layout.activity_test);
super.onCreate(savedInstanceState);

zu

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

Beheben Sie mein Problem.

Ich hoffe es hilft !!


0

Wenn Sie hinzugefügt haben <item name="windowActionBar">false</item>, müssen Sie hinzufügen

<item name="windowNoTitle">true</item>

um das Problem zu lösen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.