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?
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' para
Activity' 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 de
getSupportFragmentManager, chame
getFragmentManager`.
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 de
ActionBarActivity'.
Dê uma olhada também @ Atributos de Diálogo no link abaixo
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:
<!-- See https://github.com/mosabua/maven-android-sdk-deployer -->
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7-appcompat</artifactId>
<version>${compatibility.version}</version>
<type>apklib</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7-appcompat</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v7</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v4</artifactId>
</dependency>
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.