Você precisa usar um tema Theme.AppCompat (ou descendente) com esta atividade

Android Studio 0.4.5

Documentação do Android para a criação de caixas de diálogo personalizadas: http://developer.android.com/guide/topics/ui/dialogs.html

Se você quiser um diálogo personalizado, você pode exibir uma Atividade como um diálogo em vez de usar as APIs do Diálogo. Basta criar uma actividade e definir o seu tema para Theme.Holo.Dialog em o <activity>elemento manifesto:

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

No entanto, quando eu tentei isso eu recebi a seguinte exceção:

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

Eu estou suportando o seguinte, e eu posso't usando algo maior que 10 para o min:

minSdkVersion 10
targetSdkVersion 19

Nos meus estilos eu tenho o seguinte:

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

E no meu manifesto, tenho isto para a actividade:

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

Criar a caixa de diálogo assim era algo que eu esperava fazer, pois eu já completei o layout.

Alguém me pode dizer como posso contornar este problema?

Solução

A razão pela qual você está tendo este problema é porque a atividade à qual você está tentando aplicar o tema do diálogo é a extensão da ActionBarActivity que requer a aplicação do tema AppCompat.

*Atualização***: A ampliação da `AppCompatActivity' também teria este problema

Neste caso, altere a herança Java de ActionBarActivity' paraActivity' e deixe o tema do diálogo no manifesto como está, um valor que não seja `Theme.AppCompat'.


A regra geral é que se você quiser que seu código suporte versões antigas do Android, ele deve ter o tema "AppCompat" e o código java deve estender "AppCompatActivity". Se você tem *uma atividade que não precisa desse suporte, como você só se importa com as versões e recursos mais recentes do Android, você pode aplicar qualquer tema a ele, mas o código java deve estender a antiga `Activity'.


NOTA: Quando mudar de AppCompatActivity' (ou uma subclasse,ActionBarActivity'), para Activity', também deve alterar as várias chamadas com "suporte" para a chamada correspondente *sem* "suporte". Então, ao invés degetSupportFragmentManager, chamegetFragmentManager`.

Comentários (25)

min sdk é 10. ActionBar está disponível a partir da api nível 11. Então para 10 você estaria utilizando AppCompat da biblioteca de suporte para a qual você precisa utilizar Theme.AppCompat ou descendente do mesmo.

Use

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

Ou se você não quiser uma barra de acção no topo

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

Mais informações @

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

Editar:

Eu posso ter lido mal o posto de operações.

Parece que a opção quer um Diálogo com um Tema de Actividade. Então, como já sugerido por Bobbake4, estenda Activity' em vez deActionBarActivity'.

Dê uma olhada também @ Atributos de Diálogo no link abaixo

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

Comentários (8)

NOTA: Eu tinha pretendido isto como uma resposta, mas testes adicionais revelam que ainda falha quando construído usando maven da linha de comando, então tive que editá-lo para ser um problema! :-(

No meu caso quando recebi este erro eu já estava usando um Tema AppCompat e o erro não fazia muito sentido.

Eu estava no processo de amadurecer a minha construção andróide. Eu já tinha dependências das versões apklib e jarro de app compatriota, portanto:



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



            android.support
            compatibility-v7-appcompat
            jar



            android.support
            compatibility-v7
            jar



            android.support
            compatibility-v4

Agora, quando eu importo o projeto maven e construo e corro do IntelliJ, está tudo bem.

Mas quando eu construo, implanto e corro da linha de comando com maven ainda recebo esta exceção.

Comentários (0)