with - web android studio




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

Basta fare

new AlertDialog.Builder(this)

Invece di

new AlertDialog.Builder(getApplicationContext())

Android Studio 0.4.5

Documentazione di 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 visualizzare invece un'attività come finestra di dialogo anziché utilizzare le API di dialogo. Crea semplicemente un'attività e imposta il tema su Theme.Holo.Dialog nell'elemento manifest <activity> :

<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 sostenendo quanto segue, e non posso usare qualcosa di più grande 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 manifesto 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 una finestra di dialogo come questa era qualcosa che stavo facendo, visto che ho già completato il layout.

Qualcuno può dirmi come posso aggirare questo problema?


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

Copia la risposta da @MarkKeen nei commenti sopra perché ho avuto lo stesso problema.

Ho avuto l'errore indicato nella parte superiore del post ed è successo dopo aver aggiunto una finestra di avviso. Ho tutte le informazioni sullo stile rilevanti nel manifest. Il mio problema è stato risolto modificando un riferimento al contesto nel generatore di avvisi - Ho cambiato:

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

a:

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

E non più problemi.


Hai molte soluzioni a questo errore.

  1. È necessario utilizzare Activity o FragmentActivity anziché ActionbarActivity o AppCompatActivity

  2. Se si desidera utilizzare ActionbarActivity o AppCompatActivity , è necessario modificare 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 utilizzare Actionbar o AppCompat .


Ho avuto lo stesso problema, ma risolto quando ho messo questo 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>

Ho avuto un tale crash su dispositivi Samsung anche se l'attività ha utilizzato Theme.AppCompat . La causa principale era legata alle 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 solo rimuovendo android:launchMode="singleTask"


La mia attività con SectionsPagerAdapter e ViewPager & Fragment

public class MyActivity extends AppCompatActivity implements ActionBar.TabListener
...
...
     @Override
        public void onPostResume(){
            super.onPostResume();
            try {
               getSupportActionBar().setDisplayShowTitleEnabled(false);
            }catch (NullPointerException ignored){
            }
        }

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

Se non usi alcuna barra delle azioni allora:

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

Nel mio caso non ho valori-v21 nella mia directory res. Poi l'ho creato e aggiunto in esso seguendo 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>


Per me nessuna delle risposte di cui sopra ha funzionato anche dopo aver avuto Theme.AppCompat come tema base per l'applicazione. Stavo usando com.android.support:design:24.1.0 Quindi ho appena cambiato la versione in 24.1.1 . Dopo la sincronizzazione gradle, funziona di nuovo e l'eccezione è andata via. Mi sembra che il problema fosse con alcune versioni precedenti delle librerie di supporto alla progettazione.

Mettetelo qui nel caso in cui altre risposte non funzionino per alcune persone.


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

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();

Questo ha funzionato per me, ho appena cambiato:

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

a questo:

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

Se devi estendere ActionBarActivity di cui hai bisogno sul tuo 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 della propria applicazione come android: Theme.Material.Light invece di AppTheme.Base, si otterrà un "IllegalStateException: è necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività".


Siete arrivati ​​a questo perché volete applicare Material Design nello stile del vostro tema nelle versioni precedenti di sdk a 21. ActionBarActivity richiede AppTheme quindi se volete anche evitare la personalizzazione del vostro AppTheme, dovete solo modificare il vostro styles.xml (precedente a sdk 21) quindi in questo modo, può ereditare un tema di App Compat.

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

per questo:

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

Stavo ricevendo lo stesso problema. Perché stavo creando un cassetto di navigazione personalizzato. Ma ho dimenticato di menzionare il tema nel mio manifesto in questo modo

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

Appena ho aggiunto il suddetto tema al mio manifest, ha risolto il problema.


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

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

Può sembrare stupido, ma ora funziona alla grande !

Spero solo che aiuti!


min sdk è 10. ActionBar è disponibile dal livello api 11. Quindi per 10 si utilizzerà AppCompat dalla libreria di supporto per la quale è necessario utilizzare Theme.AppCompat o discendente della stessa.

Uso

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

O se non vuoi barra delle azioni in alto

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

Ulteriori informazioni @

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

Modificare:

Potrei aver letto male post.

Sembra che op vuole una finestra di dialogo con un tema di attività. Quindi, come già suggerito da Bobbake4, estendi Activity invece di ActionBarActivity .

Dai anche un'occhiata agli attributi della finestra di dialogo nel link sottostante

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


per me era la 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 programmazione?





android-studio