È necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività


1004

Android Studio 0.4.5

Documentazione Android per la creazione di finestre di dialogo personalizzate: http://developer.android.com/guide/topics/ui/dialogs.html

Se si desidera una finestra di dialogo personalizzata, è possibile invece visualizzare un'attività come finestra di dialogo anziché utilizzare le API della finestra di dialogo. Basta creare un'attività e impostare il tema su Theme.Holo.Dialog nell'elemento <activity>manifest:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

Tuttavia, quando ho provato questo ottengo la seguente eccezione:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

Sto supportando quanto segue e non posso usare qualcosa di maggiore di 10 per il minimo:

minSdkVersion 10
targetSdkVersion 19

Nei miei stili ho il seguente:

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

E nel mio manifest ho questo per l'attività:

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:theme="@android:style/Theme.Holo.Light.Dialog"
            android:name="com.ssd.register.Dialog_update"
            android:label="@string/title_activity_dialog_update" >
        </activity>

Creare la finestra di dialogo in questo modo era qualcosa che mi aspettavo di fare, poiché ho già completato il layout.

Qualcuno può dirmi come posso aggirare questo problema?


2
@Raghunandan, sono nuovo in questo, ma guardando i miei stili ho il seguente: <style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar"> E ho le seguenti importazioni: import android.support.v7 .app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; Ma non sono sicuro di cosa significhi tutto ciò.
ant2009,

10
Stai utilizzando AppCompatquale è la libreria di supporto per supportare le barre delle azioni al di sotto del livello api 11. Basta usare android:theme="@style/AppTheme" >per l'attività in manifest
Raghunandan,

2
@ ant2009, per affermare ciò che ha detto @Raghunandan: nel tuo AndroidManifest.xml, il tema che stai specificando per la tua attività sta sostituendo il tema che stai specificando per la tua applicazione. Rimuovi la android:themelinea dal <activity>tag.
criptocronoconolite,

3
In questo modo si rimuoverà l'errore ma non lo si porterà dove vuole essere, che è un'attività con un tema di dialogo. La regola generale è che se vuoi che la tua attività abbia una barra delle azioni dovrebbe avere il tema AppCompat e il codice java dovrebbe estendere ActionBarActivity. Se hai un'attività che non ha bisogno di una barra delle azioni (come un'attività a tema della finestra di dialogo) puoi applicare qualsiasi tema ad essa ma il codice java deve estendere la vecchia attività.
Bobbake4,

1
Penso che l'unico problema in questo caso sia il contesto che fornisci al fornitore di Dialog. Vedi la mia risposta stackoverflow.com/a/51574281/232727
Vitaliy A

Risposte:


1124

Il motivo per cui si riscontra questo problema è perché l'attività a cui si sta tentando di applicare il tema della finestra di dialogo si sta estendendo, il ActionBarActivityche richiede l'applicazione del AppCompattema.

Aggiornamento : l'estensione AppCompatActivityavrebbe anche questo problema

In questo caso, modificare l'eredità Java da ActionBarActivitya Activitye lasciare il tema del dialogo nel manifest così com'è, un Theme.AppCompatvalore non


La regola generale è che se vuoi che il tuo codice supporti versioni precedenti di Android, dovrebbe avere il AppCompattema e il codice java dovrebbe estendersi AppCompatActivity. Se hai * un'attività che non ha bisogno di questo supporto, ad esempio ti preoccupi solo delle ultime versioni e funzionalità di Android, puoi applicare qualsiasi tema ad esso, ma il codice java deve estendersi Activity.


NOTA: quando si passa da AppCompatActivity(o una sottoclasse ActionBarActivity), a Activity, è necessario modificare anche le varie chiamate con "supporto" nella chiamata corrispondente senza "supporto". Quindi, invece di getSupportFragmentManager, chiama getFragmentManager.


6
op sta usando appcompat nel qual caso dovrebbe estendere ActionBarActivityquale è ciò che viene mostrato dalle sue dichiarazioni di importazione dal commento sotto il quesiton.
Raghunandan,

2
@Bursos Se stai parlando quando crei un nuovo progetto in Android Studio, suppongo che sia un bug nella configurazione standard.
Bobbake4,

2
@ Bobbake4, sto avendo lo stesso problema, e questa soluzione è impossibile lavorare per me. Il fatto è che non posso estendere Activity, perché ho un sacco di classi (intero progetto) che inoltro su ActionBarActivity. C'è qualche altra soluzione al problema? Thx
5er

6
@ 5er Se Java utilizza ActionBarActivity il tema deve estendere Theme.AppCompat. Ci sono una manciata di temi integrati che estendono Theme.AppCompat o potresti estenderlo tu stesso e modificarlo. Senza rimuovere il genitore ActionBarActivity non puoi spostarti utilizzando Theme.AppCompat.
Bobbake4,

26
In stile <style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar"> questo ha risolto il mio problema. :)
Harmeet Singh,

545

Tutto quello che devi fare è aggiungere android:theme="@style/Theme.AppCompat.Light"al tag dell'applicazione nel AndroidManifest.xmlfile.


2
Nel codice, ant2009 ha AppTheme impostato come applicazione che si estende da un discendente di Theme.AppCompat. Dovrebbe funzionare. Ho avuto lo stesso problema dopo l'aggiornamento a 5.0 sul mio dispositivo e ho finito per impostare @ style / Theme.AppCompat.Light come tema sulla mia attività. Qualcosa non è qui ...
Speedynomads

36
Questa non è una risposta valida per Android Studio, anche se in alcuni casi funzionerà come una soluzione rapida quando si bypassano i file styles.xml. In Android Studio, il modo corretto di definire il tema è definirli nei file styles.xml, quindi il file manifest di Android si limiterà a fare riferimento a loro e selezionarli in base alla versione di Android in esecuzione sul dispositivo. Di solito è impostato su Android: theme = "@ style / AppTheme" e questo AppTheme si riferisce a <style name = "Theme.AppTheme" parent = "Theme.AppCompat.Light"> in styles.xml
zeeshan

5
Questo non ha funzionato davvero per me perché le mie barre del titolo sono scomparse quando ho usato altro che holo ...
AndyD273,

1
Ho affrontato questo problema anche usando SnackBar. Questo ha risolto il mio problema.
funzionato il

2
@Martin se sei come me, hai dimenticato di aggiungere lo stesso nome di stile nel file styles.xml generale di quello che hai inserito nel file styles.xml (V21) (senza le proprietà specifiche di V21). Se dichiari uno stile nella cartella V21 e il tuo dispositivo ha una versione in basso. Non riesce a trovarlo, quindi viene generata un'eccezione.
letroll,

275

Copia della risposta di @MarkKeen nei commenti sopra poiché ho avuto lo stesso problema.

Ho riportato l'errore nella parte superiore del post e si è verificato dopo aver aggiunto una finestra di avviso. Ho tutte le informazioni di stile rilevanti nel manifest. Il mio problema è stato risolto modificando un riferimento di contesto nel generatore di avvisi - Ho cambiato:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

per:

new android.support.v7.app.AlertDialog.Builder(this)

E non più problemi.


5
È successo anche a me. Ci stavo solo provando e la tua risposta ha funzionato davvero! Qual è la logica per farlo funzionare? Non ho davvero capito.
kirtan403,

6
Oppure, se stai creando il tuo AlertDialog in un frammento, piuttosto che direttamente in un'attività, usa getActivity()piuttosto che thiscome suggerito sopra e il problema è risolto. Per quanto riguarda il motivo, posso solo supporre che il vecchio codice AlertDialog.Builder (xxx) volesse o meno un tipo diverso o semplicemente meno schizzinoso su ciò che è stato passato, mentre l'attuale Builder () vuole davvero un'attività. Dal momento che Google ha scelto di nascondere (rimuovere?) La documentazione per il vecchio codice, presumibilmente nel tentativo di incoraggiare l'uso della versione v7.app, non ho modo di dirlo con certezza.
Anne Gunn,

Ha fatto il contrario di ciò che viene suggerito. E ha funzionato: P. Grazie!
Harisewak,

1
Questo risolve il programma per me, anche tu useresti getContext()invece dithis useresti se ti trovi all'interno di un ArrayAdapter o di una simile classe di adattatore.
Ibrahim.H,

1
Questa è la vera soluzione che abbia mai incontrato. SUGGERIMENTO: si prega di menzionare la differenza in getApplicationContext () e questo in questo scopo.
prazeev

109

min sdk è 10. ActionBarè disponibile dal livello api 11. Quindi per 10 useresti AppCompatdalla libreria di supporto per la quale devi usare Theme.AppCompato discendente dello stesso.

Uso

android:theme="@style/Theme.AppCompat" >

O se non vuoi la barra delle azioni in alto

android:theme="@style/Theme.AppCompat.NoActionBar">

Ulteriori informazioni @

http://developer.android.com/guide/topics/ui/actionbar.html

Modificare:

Potrei avere letto male op post.

Sembra che voglia una finestra di dialogo con un tema di attività. Quindi, come già suggerito da Bobbake4 estendereActivity anziché ActionBarActivity.

Dai anche un'occhiata a Attributi della finestra di dialogo nel link in basso

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/


Grazie per il suggerimento L'ho provato già in realtà. E ho avuto lo stesso problema. Il mio file di stili è simile al seguente: <style name = "AppTheme" parent = "Theme.AppCompat">
ant2009

@ ant2009 non lo farai. Usa un tema della libreria di supporto AppCompat per la tua attività
Raghunandan,

Non sono sicuro se sto aggiungendo questo tema corretto. Ma intendi aggiungere la seguente dichiarazione di importazione? import android.support.v7.appcompat. *; Tuttavia, l'ho provato e forse mi sbaglio perché ho finito con la stessa eccezione.
ant2009,

@ ant2009 puoi avere una finestra di dialogo personalizzata. Ma vuoi la finestra di dialogo a schermo intero?
Raghunandan,

Non volevo averlo a schermo intero. Solo una finestra di dialogo. Tuttavia, il problema è ora risolto. Bobbake4 ha capito bene. Grazie comunque per il tuo impegno, hai dato consigli utili. Tuttavia, sono ancora confuso con tutta questa libreria di supporto e AppCompat.
ant2009,

99

Se si utilizza il contesto dell'applicazione, in questo modo:

final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

cambiarlo in un contesto di attività come questo:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

Lo stesso se stai utilizzando LayoutInflater.from (<contesto di applicazione>), assicurati di utilizzare il contesto dell'attività o il LayoutInflater fornito in modo che erediti il ​​tema giusto.
lbarbosa,

1
La tua soluzione mi ha aiutato nel mio caso. Puoi spiegare quale differenza tra getApplicationContext () e MainActivity.this?
kostyabakay,

fare riferimento a questo link: stackoverflow.com/questions/22966601/...
Darush

9
hai bisogno di un'attività, non di un contesto, per visualizzare le finestre di dialogo
behelit

questa soluzione lo risolve
Mohamed Amin,

45

Stavo riscontrando questo problema anche se il mio tema era un AppCompattema e la mia attività era un AppCompatActivity(o Activity, come suggerito dalle risposte degli altri). Quindi ho pulito, ricostruito e rieseguito il progetto.

( Build -> Clean Project; Build -> Rebuild Project; Run -> Run )

Può sembrare stupido, ma ora funziona alla grande !

Spero solo che ti aiuti!


1
Aveva lo stesso messaggio esatto dopo aver aggiunto DialogFragment all'attività AppCompat. File, cache non valide / riavvio risolto in un pizzico.
Halxinate

2
Ho provato quasi tutte le risposte in questa discussione. ma funziona solo questa risposta apparentemente "stupida". grazie!
Dika,

27

Questo è ciò che l'ha risolto per me: invece di specificare il tema in manifest, l'ho definito onCreateper ogni attività che si estende ActionBarActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.MyAppTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity_layout);
...
}

Ecco MyAppThemeun discendente di Theme.AppCompat, ed è definito in xml. Si noti che il tema deve essere impostato prima super.onCreatee setContentView.


1
Robolectric sta lanciando una NullPointerException sulla linea setTheme quando tenta di caricare la risorsa. Qualche idea sul perché?
Rhys Davis,

@RhysDavis Difficile dirlo senza traccia dello stack, ma forse vuole prima impostare setContentView? In tal caso, questa correzione non funzionerà per te.
k29,

19

vai ai tuoi stili e metti il ​​genitore

parent="Theme.AppCompat"

invece di

parent="@android:style/Theme.Holo.Light"

Perché possiamo farlo con un'attività standard. Android non ha inserito le barre delle azioni nelle attività standard con ICS o Honecomb? Dobbiamo sempre usare ActionBarActivity se impostiamo il nostro obiettivo minimo su SDK ICS?
Andrew S,

come vedere quale tema dovremmo usare con il tipo o la funzione che stiamo usando perché quando importiamo abbiamo tutti i tipi di temi disponibili
blackHawk

17

Cambia il tema dell'attività desiderata. Questo funziona per me:

<activity
            android:name="HomeActivity"
            android:screenOrientation="landscape"
            android:theme="@style/Theme.AppCompat.Light"
            android:windowSoftInputMode="stateHidden" />

16

Nel mio caso non ho alcun file valori-v21 nella mia directory res. Quindi l'ho creato e aggiunto in esso i seguenti codici:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Stavo eseguendo il mio progetto su dispositivi Oreo + e solo questo ha funzionato per me.
Nishant Soni,

14

Ho avuto un simile arresto anomalo sui dispositivi Samsung anche se l'attività ha utilizzato Theme.AppCompat . La causa principale era legata a strane ottimizzazioni sul lato Samsung:

- if one activity of your app has theme not inherited from Theme.AppCompat
- and it has also `android:launchMode="singleTask"`
- then all the activities that are launched from it will share the same Theme

La mia soluzione stava rimuovendo android:launchMode="singleTask"


2
Mi sono appena imbattuto anche in questo, non ho convalidato la correzione e non riesco a riprodurre l'errore .. ma vedo questo errore in natura solo su dispositivi Samsung. la maggior parte sembrano essere radicata così, FWIW
DANB

Ho riportato l'errore all'inizio del messaggio e si è verificato dopo aver aggiunto una finestra di avviso. Ho tutte le informazioni di stile rilevanti nel manifest. Il mio problema è stato risolto modificando un riferimento di contesto nel generatore di avvisi: ho modificato: new android.support.v7.app.AlertDialog.Builder (getApplicationContext ()) in: new android.support.v7.app.AlertDialog.Builder (this ) e non più problemi ...
Mark Keen,

Hai ulteriori dettagli o link a Samsung su questa ottimizzazione? Tutte le attività devono quindi implementare Theme.AppCompat o possono esserci attività senza tema?
AAverin il

13

Se è necessario estendere ActionBarActivity, è necessario sul proprio style.xml:

<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->

Se si imposta come tema principale dell'applicazione come Android: Theme.Material.Light anziché AppTheme.Base , verrà visualizzato l'errore "IllegalStateException: è necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività".


13

Basta fare

new AlertDialog.Builder(this)

Invece di

new AlertDialog.Builder(getApplicationContext())

Soluzione funzionante! 30 minuti per scoprirlo con questa risposta. Perché sto usando il nuovo AlertDialog.Builder (getApplicationContext ())?
Erich García,

Sarà utile spiegare quale tipo thisdovrebbe essere.
Blago,

12

Ho avuto lo stesso problema, ma è stato risolto quando l'ho messo su manifest: android: theme = "@ style / Theme.AppCompat.

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name_test"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat">

        ...    

    </application>

10

Nel mio caso, questo problema è apparso quando ho provato a mostrare Dialog. Il problema era nel contesto, ho usato getBaseContext () che teoricamente dovrebbe restituire il contesto Activity, ma sembra che non lo sia, oppure restituisce il contesto prima di applicare qualsiasi tema.

Quindi ho appena sostituito getBaseContexts () con " this ", e ora funziona come previsto.

        Dialog.showAlert(this, title, message,....);

stavo passando getApplicaitonContext (), ma il tuo ha fatto il trucco
Jeeva

9

Ho avuto un'attività con tema <android:theme="@android:style/Theme.Dialog">utilizzato per mostrare la finestra di dialogo nel mio appWidget e ho avuto lo stesso problema

ho risolto questo errore modificando il codice attività come di seguito:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_AppCompat_Dialog); //this line i added
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog);
}

2
Questa è stata una risposta semplice che ha funzionato per me senza tutta la complessità e la non risposta di quella accettata.
Cory Trese,

8

per me era una soluzione per usare ContextThemeWrapper:

private FloatingActionButton getFAB() {
Context context = new android.support.v7.view.ContextThemeWrapper(getContext(), R.style.AppTheme);
FloatingActionButton fab = new FloatingActionButton(context);
return fab;}

da Android - Come creare FAB a livello di codice?


8

Assicurarsi di utilizzare un contesto di attività durante la creazione di una nuova finestra di avviso e non di un'applicazione o di un contesto di base.


7

Ho avuto anche questo problema e quello che ho fatto per risolverlo, e ancora usare il tema Holo è stato quello di prendere questi passaggi:

prima ho sostituito questa importazione:

import android.support.v7.app.AppCompatActivity;

con questo:

import android.app.Activity;

quindi ho cambiato la mia estensione da:

public class MyClass extends AppCompatActivity {//...

a questo:

public class MyClass extends Activity {//...

E anche dovuto cambiare questa importazione:

import android.support.v7.app.AlertDialog;

a questa importazione:

import android.app.AlertDialog;

e quindi puoi usare il tag del tema nel manifest a livello di attività:

android:theme="@android:style/Theme.Holo.Dialog" />

e, infine, (a meno che tu non abbia altre classi nel tuo progetto che devono usare v7 appCompat) puoi pulire e ricostruire il tuo progetto o eliminare questa voce nel file build gradle a livello di app:

compile 'com.android.support:appcompat-v7:23.2.1'

se hai altre classi nel tuo progetto che devono usare v7 appCompat, pulisci e ricostruisci il progetto.


6

Sei arrivato a questo perché vuoi applicare Material Design nel tuo stile del tema nelle precedenti versioni di sdk a 21. ActionBarActivityrichiede AppThemequindi se vuoi anche impedire la tua personalizzazione su AppTheme, solo tu devi cambiare in styles.xml (precedente a sdk 21) in questo modo, può ereditare per un tema Compatibilità app.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

per questo:

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

6
Fatto quello. Hai ancora il problema. Quindi c'è di più.
Martin,

6

Cambia il tuo genitore stile tema in

 parent="Theme.AppCompat"

Questo ha funzionato per me ...


6

Hai molte soluzioni a quell'errore.

  1. È necessario utilizzare Activity o FragmentActivity invece di ActionbarActivity o AppCompatActivity

  2. Se si desidera utilizzare ActionbarActivity o AppCompatActivity , è necessario cambiare in styles.xml Theme.Holo.xxxx in Theme.AppCompat.Light (se necessario aggiungere a DarkActionbar )

Se non hai bisogno di attributi avanzati sulla barra delle azioni o AppCompat non devi usare la barra delle azioni o AppCompat .


6

In Android manifest basta cambiare il tema dell'attività in AppTheme come segue frammento di codice

<activity
  android:name=".MainActivity"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
</activity>

<attività android: name = ". MainActivity" android: label = "@ string / app_name" android: theme = "@ style / AppTheme"> </activity>
shikha

6

Questo è quando vuoi un AlertDialog in un frammento

            AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
            adb.setTitle("My alert Dialogue \n");
            adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                  //some code

            } });
            adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                 dialog.dismiss();

                } });
            adb.show();

6

Nelle mie esperienze il problema era il contesto in cui ho mostrato il mio dialogo. All'interno di un pulsante fare clic su un'istanza di un AlertDialog in questo modo:

builder = new AlertDialog.Builder(getApplicationContext());

Ma il contesto non era corretto e ha causato l'errore. L'ho modificato usando il contesto dell'applicazione in questo modo:

Nella sezione dichiarare:

Context mContext;

nel metodo onCreate

mContext = this;

E infine nel codice in cui ho bisogno di AlertDialog:

start_stop = (Button) findViewById(R.id.start_stop);
start_stop.setOnClickListener( new View.OnClickListener()
     {
                @Override
                public void onClick(View v)
                {
                    if (!is_running)
                    {
                        builder = new AlertDialog.Builder(mContext);
                        builder.setMessage("MYTEXT")
                                .setCancelable(false)
                                .setPositiveButton("SI", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                    Task_Started = false;
                                    startTask();
                                    }
                                })
                                .setNegativeButton("NO",
                                        new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                    }
                                });
                        AlertDialog alert = builder.create();
                        alert.show();
                    }
            }
        }

Questa è la soluzione per me


Hai ragione a dire che non dovresti usare un contesto applicativo come in origine. Quello che hai fatto è invece usare un'attività come contesto. Questo non è, tuttavia, un contesto di applicazione o una sua sottoclasse. Quindi non è giusto dire che stai usando un contesto applicativo in un modo diverso.
Hod,

5

Questo ha funzionato per me:

<application
           android:allowBackup="true"
           android:icon="@mipmap/ic_launcher"
           android:label="@string/app_name"
           android:theme="@style/AppTheme" >
           <activity
               android:name=".MainActivity"
               android:label="@string/app_name"
               android:theme="@style/Theme.AppCompat.NoActionBar">

               <intent-filter>
                   <action android:name="android.intent.action.MAIN" />

                   <category android:name="android.intent.category.LAUNCHER" />
               </intent-filter>
           </activity>
</application>

5

La tua attività estende ActionBarActivity che richiede l' applicazione di AppCompat.theme . Passa da ActionBarActivity ad Activity o FragmentActivity , risolverà il problema.

Se non usi nessuna barra delle azioni, allora:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" 

5

Stavo riscontrando lo stesso problema. Perché stavo creando un cassetto di navigazione personalizzato. Ma dimentico di menzionare il tema nel mio manifest in questo modo

android:theme="@style/Theme.AppCompat.NoActionBar"

Non appena ho aggiunto il tema precedente al mio manifest, ho risolto il problema.


4

Soluzione rapida.

Cambia il tuo genitore tema base in styles.xml

Sostituisci da

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

per

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

non mi aiuta, l'eccezione si innesca ancora
Eugene Gr. Philippov,

3

Questa soluzione ha funzionato per me.

La libreria di progettazione dipende dalle librerie di supporto Support v4 e AppCompat, quindi non utilizzare versioni diverse per appcompat e la libreria di progettazione in gradle.

uso

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.0.0'

invece di

 compile 'com.android.support:appcompat-v7:23.0.0'
 compile 'com.android.support:design:23.1.0'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.