Du må bruke et Theme.AppCompat-tema (eller en etterkommer) med denne aktiviteten.

Android Studio 0.4.5

Android-dokumentasjon for oppretting av egendefinerte dialogbokser: http://developer.android.com/guide/topics/ui/dialogs.html

Hvis du vil ha en egendefinert dialogboks, kan du i stedet vise en aktivitet som en dialogboks i stedet for å bruke dialog-API-ene. Du oppretter ganske enkelt en aktivitet og angir temaet til Theme.Holo.Dialog i manifestelementet <activity>:

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

Men da jeg prøvde dette, fikk jeg følgende unntak:

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

Jeg støtter følgende, og jeg kan ikke bruke noe større enn 10 for min:

minSdkVersion 10
targetSdkVersion 19

I stilene mine har jeg følgende:

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

Og i manifestet mitt har jeg dette for aktiviteten:

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

Å lage dialogboksen på denne måten var noe jeg hadde tenkt å gjøre, siden jeg allerede har fullført layouten.

Kan noen fortelle meg hvordan jeg kan omgå dette problemet?

Løsning

Årsaken til at du har dette problemet, er at aktiviteten du prøver å bruke dialogtemaet på, utvider ActionBarActivity, som krever at temaet AppCompat brukes.

Oppdatering: Dette problemet oppstår også ved utvidelse av AppCompatActivity.

I dette tilfellet endrer du Java-arven fra ActionBarActivity til Activity og lar dialogtemaet i manifestet være som det er, en verdi som ikke er Theme.AppCompat.


Den generelle regelen er at hvis du vil at koden din skal støtte eldre versjoner av Android, bør den ha AppCompat-temaet, og javakoden bør utvide AppCompatActivity. Hvis du har *en aktivitet som ikke trenger denne støtten, f.eks. hvis du bare bryr deg om de nyeste versjonene og funksjonene i Android, kan du bruke et hvilket som helst tema på den, men javakoden må utvide Activity.


MERK: Når du endrer fra AppCompatActivity (eller en underklasse, ActionBarActivity) til Activity, må du også endre de ulike kallene med "support" til tilsvarende kall uten "support". Så i stedet for getSupportFragmentManager, kaller du getFragmentManager.

Kommentarer (25)

min sdk er 10. ActionBar er tilgjengelig fra api-nivå 11. Så for 10 vil du bruke AppCompat fra støttebiblioteket som du må bruke Theme.AppCompat eller etterkommer av det samme.

Bruk

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

Eller hvis du ikke vil ha en handlingslinje øverst i menyen

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

Mer informasjon @

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

Rediger:

Jeg kan ha lest innlegget feil.

Ser ut til at op ønsker en dialog med et aktivitetstema. Så som allerede foreslått av Bobbake4 utvide Activity i stedet for ActionBarActivity.

Ta også en titt på dialogattributter i lenken nedenfor

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

Kommentarer (8)

MERK: Jeg hadde tenkt dette som et svar, men videre testing viser at det fortsatt mislykkes når det bygges med maven fra kommandolinjen, så jeg har måttet redigere det til å være et problem :-(.

I mitt tilfelle, da jeg fikk denne feilen, brukte jeg allerede et AppCompat Theme, og feilen ga ikke mye mening.

Jeg var i ferd med å mavenizing min android build. Jeg hadde allerede avhengigheter av apklib- og jar-versjonene av app compat, dermed:



            android.support
            compatibility-v7-appcompat
            ${compatibility.version}
            apklib



            android.support
            compatibility-v7-appcompat
            jar



            android.support
            compatibility-v7
            jar



            android.support
            compatibility-v4

Nå, når jeg importerer maven-prosjektet og bygger og kjører fra IntelliJ, går det bra.

Men når jeg bygger og distribuerer og kjører fra kommandolinjen med maven, får jeg fortsatt dette unntaket.

Kommentarer (0)