Java.lang.IllegalArgumentException: Vous devez utiliser un thème Theme.AppCompat (ou descendant) avec la bibliothèque de conception

J'essaie d'implémenter "Flexible Space with Image" de Material Design à l'aide de ce tutoriel:

Animation de la barre d'outils avec la bibliothèque de support de conception Android

  • Android 6.0 gère incorrectement la méthode drawCircle
  • Placez la vue dans FrameLayout dans Android
  • Pourquoi ma méthode de comparaison lance-t-elle une exception - La méthode de comparaison enfreint son contrat général!
  • Ajout d'un dossier d'actifs dans Android Studio
  • Impossible de cliquer sur les éléments dans ListView avec un adaptateur personnalisé
  • Avertissement de coulée non contrôlé - comment éviter cela?
  • Mais je reçois ce message de problème de rendu dans l'aperçu de mise en page:

    Les classes suivantes ne peuvent pas être instanciées:

    – android.support.design.widget.CoordinatorLayout (Open Class, Show Exception, Clear Cache) – android.support.design.widget.AppBarLayout (Open Class, Show Exception, Clear Cache)

    J'ai appliqué le thème Theme.AppCompat à ma application, mais il Theme.AppCompat la barre d'action et l'apparence dans toutes les autres activités. De plus, elle lance une erreur sur les méthodes de la barre d'action telles que:

    ActionBar.setDisplayHomeAsUpEnabled (true);

    Indiquant l'erreur (approximativement) comme suit:

    SetDisplayHomeAsUpEnabled (boolean) est appelé sur une référence d'objet nulle

    De plus, l'utilisation de Theme.AppCompat pour l'application complète donne l'erreur suivante dans l'écran de prévisualisation:

    Les classes suivantes n'ont pas pu être trouvées: – android.support.v7.internal.app.WindowDecorActionBar (Fix Build Path, Create Class)

    Je ne souhaite donc pas utiliser Theme.AppCompat pour l'ensemble de l'application. Cependant, l'utilisation d'un Theme.AppCompat pour l'activité spécifique où je souhaite utiliser la conception «Espace flexible avec image» ne résout pas le problème de CoordinatorLayout et AppBarLayout déclaré précédemment.

    S'il vous plaît dites-moi ce qu'il faut faire! J'ai lu beaucoup de messages de stackoverflow sur le même problème mais ils n'ont pas fonctionné pour moi! J'ai redémarré le studio Android et j'ai invalidé mon cache et j'ai redémarré d'innombrables fois aussi!

    Voici les dépendances dans mon build.gradle

     dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:support-v4:23.0.1' compile 'com.android.support:appcompat-v7:23.0.1' compile project(':viewPagerIndicator') compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' } 

    L'exécution de l'application tel que sur mon téléphone me donne cette erreur:

    Java.lang.IllegalStateException: cette activité possède déjà une barre d'action fournie par le décor de la fenêtre. Ne demandez pas Window.FEATURE_SUPPORT_ACTION_BAR et définissez windowActionBar comme false dans votre thème pour utiliser une barre d'outils à la place.

    Définir la fenêtreActionBar sur false comme tel:

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

    Et ensuite l'exécution de l'application lance cette erreur:

    Java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo {com.seven.actionbar / com.seven.actionbar.EventsDetailActivity}: java.lang.IllegalArgumentException: AppCompat ne prend pas en charge les fonctionnalités du thème actuel: {windowActionBar: false, windowActionBarOverlay: false , Android: windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false}

    Voici le bit de la barre d'outils à partir du fichier EventsDetailsActivity.java:

      Toolbar toolbar; CollapsingToolbarLayout collapsingToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_eventsdetail); actionBarColor = new ColorDrawable(ContextCompat.getColor(getApplicationContext(), R.color.ufl_orange)); tDes = (TextView)findViewById(R.id.evt_desc); tVenue = (TextView)findViewById(R.id.evt_venue); tDate = (TextView)findViewById(R.id.evt_date); tTime = (TextView)findViewById(R.id.evt_time); tPdate = (TextView)findViewById(R.id.evt_post_date); tPtime = (TextView)findViewById(R.id.evt_post_time); tCont = (TextView)findViewById(R.id.evt_contact); tOrg = (TextView)findViewById(R.id.evt_org); tCount = (TextView)findViewById(R.id.evt_count); //Intent intent = getIntent(); //joinMap = (HashMap)intent.getSerializableExtra("e_uMap"); myApp = (MyApp)getApplication(); //action bar magic actionBarColor.setAlpha(0); toolbar = (Toolbar) findViewById(R.id.anim_toolbar); setSupportActionBar(toolbar); collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); ImageView header = (ImageView) findViewById(R.id.header); new LoadDetail().execute(); goingSwitch = (Switch) findViewById(R.id.btn_join); goingSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { new JoinEvents().execute(String.valueOf(isChecked)); } }); } @Override public void onStart(){ super.onStart(); // actionBar = this.getActionBar(); // actionBar.setDisplayShowHomeEnabled(false); } 

    Voici le code de mise en page qui l'accompagne:

     <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".EventsDetailActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="192dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginBottom="32dp" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/header" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/monalisa" android:fitsSystemWindows="true" android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/anim_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"/>' </android.support.design.widget.CoordinatorLayout> 

    Les éléments enfants ScrollView et associés (qui ne sont pas affichés ici) sont le contenu principal de la page.

    Aussi modifié le thème pour:

     <style name="EventsTheme" parent="Theme.AppCompat.Light"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

    Alors que RuntimeException et RuntimeException sont RuntimeException je ne vois plus le CoordinatorLayout .

    faux

  • Comment libérer (forcé, si nécessaire) 9-patch (NinePatchDrawable) de la mémoire dans Android?
  • Comment simuler: pseudo-classe css active dans Android sur des éléments non liés?
  • L'exécution instantanée ne fonctionnera pas sur Android Studio, indique que Gradle version 2.10 est nécessaire. J'utilise 2.10
  • Comment déclencher une vibration sur l'entrée du son?
  • Essayez d'invoquer la méthode virtuelle 'void android.support.v4.view.ViewPager.setAdapter (android.support.v4.view.PagerAdapter)' sur une référence d'objet nulle
  • SQLite "INSERT OU REPLACE INTO" ne fonctionne pas
  • 3 Solutions collect form web for “Java.lang.IllegalArgumentException: Vous devez utiliser un thème Theme.AppCompat (ou descendant) avec la bibliothèque de conception”

    Pourquoi devez-vous utiliser la Toolbar ? Avez-vous besoin de supporter certaines anciennes versions d'Android? Le fait est qu'une Toolbar n'est pas en fait ActionBar . Il manque de fonctionnalités et vous oblige à utiliser des thèmes définis sur vos activités. Donc, si vous n'avez pas besoin de prendre en charge certaines anciennes versions d'Android (v7.Toolbar est pour SDK 7 (Android 2.1).

    Oh, d'ailleurs, qu'est-ce que vous essayez de faire, c'est appeler la mise en page de la barre d'outils en panne. Consultez ce lien pour le didacticiel http://antonioleiva.com/collapsing-toolbar-layout/

    PS Ne compilez pas différentes versions de la même bibliothèque! Ne faites pas ceci:

     compile 'com.android.support:appcompat-v7:23.0.1' compile project(':viewPagerIndicator') compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' 

    Au lieu de cela, modifiez-le à ceci:

     compile 'com.android.support:appcompat-v7:23.0.1' compile project(':viewPagerIndicator') compile 'com.android.support:design:23.0.1' 

    Quel est votre lancer en ligne

    Java.lang.IllegalStateException: cette activité possède déjà une barre d'action fournie par le décor de la fenêtre. Ne demandez pas Window.FEATURE_SUPPORT_ACTION_BAR et définissez windowActionBar comme false dans votre thème pour utiliser une barre d'outils à la place.

    1. Tous vos thèmes (qui veulent une barre d'action / barre d'outils ) doivent hériter de Theme.AppCompat . Il existe des variantes disponibles, y compris Light and NoActionBar.

    Veuillez lire le document officiel sur AppCompat

    Que devrais tu faire

    1. Veuillez définir parent="Theme.AppCompat.NoActionBar" au lieu de parent = "Theme.AppCompat.Light "

    2. Évitez les appels de bibliothèque en double . support:appcompat appelé deux fois dans votre section build.gradle .

    Vous pouvez vérifier les types de questions similaires sur SO

    1. Window.FEATURE_ACTION_BAR et définissez windowActionBar à false
    2. AppCompat ne prend pas en charge les fonctionnalités du thème actuel

    D'ACCORD! Le problème célèbre de la barre d'outils.

    À partir de ce qu'il semble, essayez de faire quelques modifications dans le code que vous avez posté.

    1) Si vous voulez ActionBar dans d'autres activités, mais celle-ci, créez un nouveau style pour NoActionBar et ajoutez ce style à cette Activité

     <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

    Noe in you AndroidManifest.xml , attribuez ce thème afin que seul EventsDetailsActivity pas ActionBar mais le repos sera.

     <activity android:name="EventsDetailsActivity" android:theme="@style/AppTheme.NoActionBar"> 

    2) Le ScrollView ne fonctionne pas bien avec CoordinatorLayout . Donc, afin d'atteindre 'Flexible Space with Image' essayez NestedScrollView au lieu de ScrollView . Cela vous donnera un effet d'animation approprié.

    3) Modifiez la Toolbar avec une Toolbar dans votre EventsDetailsActivity .

    J'espère que cela aide.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.