Android Studio 0.4.5
Documentation Android pour la création de boîtes de dialogue personnalisées : http://developer.Android.com/guide/topics/ui/dialogs.html
Si vous souhaitez une boîte de dialogue personnalisée, vous pouvez afficher une activité sous forme de boîte de dialogue au lieu d'utiliser les API de boîte de dialogue. Il suffit de créer une activité et de définir son thème sur Theme.Holo.Dialog dans la section dans l'élément <activity>
élément manifeste :
<activity android:theme="@android:style/Theme.Holo.Dialog" >
Cependant, lorsque j'ai essayé de le faire, j'ai obtenu l'exception suivante :
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity
Je soutiens ce qui suit, et je ne peux pas utiliser quelque chose de plus grand que 10 pour la valeur minimale :
minSdkVersion 10
targetSdkVersion 19
Dans mes styles, j'ai les éléments suivants :
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Et dans mon manifeste, j'ai ceci pour l'activité :
<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>
Créer la boîte de dialogue de cette manière était quelque chose que j'espérais faire, car j'avais déjà terminé la mise en page.
Quelqu'un peut-il me dire comment contourner ce problème ?
0 votes
Utilisez-vous
AppCompat
de la bibliothèque d'appui ?2 votes
@Raghunandan, je suis novice en la matière, mais en regardant mes styles, j'ai ce qui suit : <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> Et j'ai les importations suivantes : import Android.support.v7.app.ActionBarActivity ; import Android.support.v7.app.ActionBar ; import Android.support.v4.app.Fragment ; Mais je ne suis pas sûr de ce que tout cela signifie.
14 votes
Vous utilisez
AppCompat
qui forme la bibliothèque de support pour les barres d'action inférieures au niveau 11 de l'API. Il suffit d'utiliserandroid:theme="@style/AppTheme" >
pour l'activité dans le manifeste2 votes
@ant2009, pour clarifier ce que @Raghunandan a dit : dans votre
AndroidManifest.xml
Le thème que vous spécifiez pour votre activité est prioritaire sur le thème que vous spécifiez pour votre application. Supprimez le thèmeandroid:theme
de la ligne<activity>
étiquette.0 votes
@ant2009 vous voulez un dialogue en plein écran ?
3 votes
Cela supprimera l'erreur, mais ne l'amènera pas là où il veut aller, c'est-à-dire à une activité avec un thème de dialogue. La règle générale est que si vous voulez que votre activité ait une barre d'action, elle doit avoir le thème AppCompat et le code Java doit étendre ActionBarActivity. Si vous avez une activité qui n'a pas besoin d'une barre d'action (comme une activité avec un thème de dialogue), vous pouvez lui appliquer n'importe quel thème, mais le code Java doit étendre une activité ordinaire.
0 votes
J'ai rencontré la même erreur et je l'ai résolue en procédant comme suit stackoverflow.com/questions/29797134/
1 votes
Je pense que le seul problème dans ce cas est le contexte que vous fournissez pour le constracteur de dialogue. Voir ma réponse. stackoverflow.com/a/51574281/232727
0 votes
Si cette erreur survient lorsque vous utilisez FragmentScenario pour tester votre fragment avec Espresso, alors vous pouvez explicitement passer R.style.Theme_AppCompat dans la méthode de lancement du scénario du fragment.
0 votes
Il s'agit parfois d'un problème de cache. Il suffit alors d'utiliser la commande gradle clean.