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?
Årsaken til at du har dette problemet, er at aktiviteten du prøver å bruke dialogtemaet på, utvider
ActionBarActivity
, som krever at temaetAppCompat
brukes.Oppdatering: Dette problemet oppstår også ved utvidelse av
AppCompatActivity
.I dette tilfellet endrer du Java-arven fra
ActionBarActivity
tilActivity
og lar dialogtemaet i manifestet være som det er, en verdi som ikke erTheme.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 utvideAppCompatActivity
. 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å utvideActivity
.MERK: Når du endrer fra
AppCompatActivity
(eller en underklasse,ActionBarActivity
) tilActivity
, må du også endre de ulike kallene med "support" til tilsvarende kall uten "support". Så i stedet forgetSupportFragmentManager
, kaller dugetFragmentManager
.min sdk er 10.
ActionBar
er tilgjengelig fra api-nivå 11. Så for 10 vil du brukeAppCompat
fra støttebiblioteket som du må brukeTheme.AppCompat
eller etterkommer av det samme.Bruk
Eller hvis du ikke vil ha en handlingslinje øverst i menyen
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 forActionBarActivity
.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/
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:
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.