Je reçois un RuntimeException sur Android 2.3.5 mais je suis utilise Theme.AppCompat (res / valeurs / themes.xml). Voici le téléphone: http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php
<!-- res/values/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Styled" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/QueryActionBar</item>
<item name="android:actionBarStyle">@style/QueryActionBar</item>
</style>
<style name="QueryActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@color/blueback</item>
<item name="android:background">@color/blueback</item>
<item name="backgroundSplit">@color/blueback</item>
<item name="android:backgroundSplit">@color/blueback</item>
</style>
</resources>
Voici le fichier pour values-v11.
<!-- res/values-v11/themes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="QueryTheme" parent="@android:style/Theme.Holo">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
Voici l'erreur.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Désolé les gens, j'ai aussi android: theme = "@ style / Theme.Styled" défini dans AndroidManifest.xml.
Theme.Styled
?Réponses:
Si vous étendez ActionBarActivity dans votre MainActivity, vous devrez également changer le thème parent dans values-v11.
Ainsi, le style.xml dans values-v11 sera -
EDIT: Je vous recommande d'arrêter d'utiliser ActionBar et de commencer à utiliser la disposition AppBar incluse dans la bibliothèque de support de conception Android
la source
Pour simplement ajouter ActionBar Compat, votre activité ou application doit utiliser le thème @ style / Theme.AppCompat dans AndroidManifest.xml comme ceci:
Cela ajoutera une barre d'action dans l'activité (ou toutes les activités si vous avez ajouté ce thème à l'application)
Mais généralement, vous devez personnaliser votre barre d'actions. Pour ce faire, vous devez créer deux styles avec le parent Theme.AppCompat, par exemple "@ style / Theme.AppCompat.Light". Le premier sera pour api 11> = (versions d'Android avec build dans la barre d'action Android), le second pour api 7-10 (pas de build dans la barre d'action).
Regardons le premier style. Il sera situé dans res / values-v11 / styles.xml . Il ressemblera à ceci:
Et vous devez avoir le même style pour l'API 7-10. Il sera situé dans res / values / styles.xml , MAIS parce que les niveaux d'API ne connaissent pas encore les éléments de style de la barre d'action Android d'origine, nous devrions en utiliser un, fourni par la bibliothèque de support. Les éléments de compatibilité ActionBar sont définis comme Android d'origine, mais sans la partie "android:" à l'avant:
Veuillez noter que, même si les niveaux d'API supérieurs à 10 ont déjà une barre d'action, vous devez toujours utiliser les styles AppCompat. Si vous ne le faites pas, vous aurez cette erreur au lancement d'Acitvity sur les appareils avec Android 3.0 et supérieur:
Voici le lien de cet article original http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html écrit par Chris Banes.
PS Désolé pour mon anglais
la source
Vérifiez et assurez-vous que vous n'avez pas d'autre dossier de valeurs qui fait référence à theme.styled et n'utilise pas le thème AppCompat
ie
values-v11
dossierla source
Essaye ça...
styles.xml
AndroidManifest.xml
la source
Votre
Activity
est en train d'étendre,ActionBarActivity
ce qui nécessite l'AppCompat.theme
application. Passer deActionBarActivity
àActivity
ouFragmentActivity
, cela résoudra le problème.la source
Faites-le simplement Build -> Clean Project. Je pense que cela résoudra votre problème.
la source
Bien sûr que oui. Rien ne s'appliquera comme par magie
Theme.Styled
à une activité. Vous devez déclarer que vos activités - ou l'ensemble de votre application - utiliseTheme.Styled
, par exemple:la source
J'ai rencontré cette erreur lorsque j'essayais de créer une boîte de dialogue lorsqu'une action est entreprise dans la classe CustomAdapter. Ce n'était pas une activité mais une classe d'adaptateur. Après 36 heures d'efforts et à la recherche de solutions, j'ai trouvé ça.
Envoyez l'activité en tant que paramètre lors de l'appel du CustomAdapter.
Définissez les variables dans l'adaptateur personnalisé.
Appelez le constructeur comme ceci.
Et enfin, lors de la création de la boîte de dialogue à l'intérieur de la classe d'adaptateur, procédez comme suit.
J'espère que ceci vous aide
la source
Je viens de faire passer mon application d'ActionBarSherlock à ActionBarCompat. Essayez de déclarer votre ancien thème comme ceci:
Ensuite, définissez le thème dans votre AndroidManifest.xml:
la source
J'ai eu un tel crash sur les appareils Samsung même si l'activité utilisait Theme.AppCompat . La cause première était liée à d'étranges optimisations du côté de Samsung:
Ma solution était juste de supprimer
android:launchMode="singleTask"
la source
android:launchMode="singleTask"
.android:launchMode="singleTask"
et toutes mes activités utilisent le thème AppCompat: /dans mon cas, j'ai créé une vue personnalisée que j'ai ajoutée au constructeur de vue personnalisée
le contexte correct est l'activité, alors l'avez changé en:
ou
la source
Pour ma vue de liste, j'utilise un adaptateur personnalisé qui étend ArrayAdapter. dans listiview j'ai 2 boutons l'un des boutons comme Custom AlertDialogBox. Ex: Activité parentActivity; Constructeur pour l'adaptateur `
`appelant l'adaptateur depuis MainActivty
écrivez maintenant ur alertdialog à l'intérieur du bouton ur qui est dans la classe Adapter
la source
pour résolveur de problème, eu apenas adicionei na minha MainActivity ("Theme = Pour résoudre mon problème, je viens de l'ajouter dans ma MainActivity (" Theme = "@ style / MyTheme" ") où MyTheme est le nom de mon thème
la source