java.lang.IllegalArgumentException: AppCompat ne prend pas en charge les fonctionnalités actuelles du thème


109

J'ai essayé de migrer un projet d'Eclipse vers le studio Android. Enfin, je suis capable de l'exécuter, mais à un certain moment, j'ai eu cette exception, et je n'ai rien trouvé dans google à ce sujet:

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. La ligne de MainActivity est:

setContentView(R.layout.activity_main);

Veuillez me conseiller si vous le pouvez.


Jamais vu cela, mais peut-être que vous utilisez une fonctionnalité de R.layout.activity_main qui nécessite une version différente de l'API Android? - Bien qu'Android Studio aime vous parler de ces choses ... Goodluck
Gready

postez votre theme.xml ou style.xml et le activity_main.xml
Charaf Eddine Mechalikh

Pouvez-vous également mettre vos fichiers .gradle ici? Vous dépendez probablement d'une ancienne application compatible?
RaphMclee

Réponses:


233

alternative à la réponse de @ sbaar,

continuer windowActionBarà falseet ajouter windowNoTitleainsi et le mettre à true.

c'est à dire

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

4
J'ai dû le faire sur mon application après la mise à jour vers le dernier appcompt (22.1) aujourd'hui. c'est tout ce que j'ai changé et mon application fonctionne à nouveau.
SteelBytes

4
c'est étrange, mais fonctionne après le commutateur ActionBarActivity -> AppCompatActivity
pawegio

5
Cette réponse n'a pas fonctionné pour moi. Seule la réponse @sbaar a fonctionné. Votre thème doit hériter de: Theme.AppCompat.NoActionBar en plus de ceux: <item name = "windowActionBar"> false </item> et <item name = "windowNoTitle"> true </item>
blueware

1
Cela fonctionne pour les thèmes qui n'ont pas d'alternative de NoActionBarstyle. Dans mon exemple, cela fonctionne pourTheme.AppCompat.Light.Dialog
dobridog

1
Cela fonctionne lors de l'héritage de Theme.AppComapt.NoActionBar. Parfait!
Tariq

41

Retirer

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

de votre thème, puis assurez-vous que vous héritez d'un thème .NoActionBar, puis définissez votre barre d'outils comme d'habitude.


1
Et pourquoi devrais-je modifier une chose? Ce projet a été très bien avec éclipse pendant des mois.
Adam Varhegyi

3
Parce qu'il y a quelques heures, Google a publié sa version 22.1 de la bibliothèque de support, provoquant ce problème dans votre projet (et dans le mien également). C'est juste une coïncidence, pas à cause de la migration vers Android Studio.
jmart

3
Pour moi, hériter du thème de .NoActionBar était la clé, aucune suppression d'élément n'était nécessaire.
Sergey Aldoukhov

30

Assurez-vous que votre thème est enfant de Theme.AppCompat.NoActionBar, puis dans styles.xml:

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

Btw, c'est un nouveau problème pour Support Library 22.1.


@QadirHussain, non, non.
Anggrayudi H

AppCompat.NoActionBar a fait tout mon textView couleur blanc utiliser Theme.AppCompat.Light.NoActionBar à la place
Hitesh Sahu


16

Vérifiez si vous appelez setContentView()après super.onCreate()et pas avant. Cela a aidé dans mon cas.


Avait windowNoTitle et windowActionBar mais ne fonctionnait toujours pas. Cela a réglé le problème pour moi. Merci!
avb


3

dans mon cas, je n'ai pas changé pour le thème .NoActionBar. Je viens de supprimer le préfixe Android de cet article.

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

et l'erreur disparaît.


ne le mentionnez pas. heureux de voir votre commentaire.
Setmax

3

Sois sûr que

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

sont au sommet de tout ce qui fonctionne pour moi .... bonne chance



1

J'ai résolu le problème par mon activité principale en étendant AppCompatActivity :)


1

J'ai eu le même problème quelque peu, supprimé android:de mon syles.xml comme ci-dessous;

 <!-- 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

J'ai eu le même problème lorsque j'ai mis à niveau la version de la bibliothèque de 22.0.0 à 22.1.1 et l'ai corrigé en revenant à la version précédente: com.android.support:appcompat-v7:22.0.0 et revenir à l'utilisation d'ActionBarActivity, pas AppCompatActivity dans mes classes d'activité comme requis par la nouvelle version de la bibliothèque de compatibilité. Je réessayerai plus tard.


0

Utilisez simplement ceci dans votre style.xml, aucune autre modification n'est nécessaire

 <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>

n'ajoutez rien au fichier d'activité, veuillez le laisser

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

Dans mon cas, je cherche la réponse @rewrihitesh, et je remarque que j'ai inversé l'ordre des éléments . Changement de

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

à

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

Résolvez mon problème.

J'espère que ça aide !!


0

si vous avez ajouté <item name="windowActionBar">false</item>, vous devez ajouter

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

résoudre le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.