Ich erhalte eine Runtime auf Android 2.3.5 , aber ich bin mit Theme.AppCompat (res / Werte / themes.xml). Dies ist das Telefon: 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>
Hier ist die Datei für 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>
Hier ist der Fehler.
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
Sorry Leute, ich habe auch android: theme = "@ style / Theme.Styled" in AndroidManifest.xml definiert.
Theme.Styled
?Antworten:
Wenn Sie ActionBarActivity in Ihrer MainActivity erweitern, müssen Sie auch das übergeordnete Thema in values-v11 ändern.
Die style.xml in values-v11 lautet also -
BEARBEITEN: Ich würde empfehlen, dass Sie ActionBar nicht mehr verwenden und das AppBar-Layout verwenden, das in der Android Design Support Library enthalten ist
quelle
Um ActionBar Compat einfach hinzuzufügen, sollte Ihre Aktivität oder Anwendung das @ style / Theme.AppCompat-Design in AndroidManifest.xml wie folgt verwenden:
Dadurch wird die Aktionsleiste in der Aktivität hinzugefügt (oder alle Aktivitäten, wenn Sie dieses Thema zur Anwendung hinzugefügt haben).
Normalerweise müssen Sie jedoch Ihre Aktionsleiste anpassen. Dazu müssen Sie zwei Stile mit dem übergeordneten Thema Theme.AppCompat erstellen, z. B. "@ style / Theme.AppCompat.Light". Das erste ist für API 11> = (Versionen von Android mit integrierter Android-Aktionsleiste), das zweite für API 7-10 (keine integrierte Aktionsleiste).
Schauen wir uns den ersten Stil an. Es befindet sich in res / values-v11 / styles.xml . Es wird so aussehen:
Und Sie müssen den gleichen Stil für API 7-10 haben. Es befindet sich in res / values / styles.xml , ABER da die API-Ebenen noch nichts über die ursprünglichen Elemente des Android-Aktionsleistenstils wissen, sollten wir eines verwenden, das von der Support-Bibliothek bereitgestellt wird. ActionBar Compat-Elemente werden wie das ursprüngliche Android definiert, jedoch ohne "android:" - Teil vorne:
Bitte markieren Sie, dass Sie auch dann AppCompat-Stile verwenden sollten, wenn API-Level über 10 bereits über eine Aktionsleiste verfügen. Wenn Sie dies nicht tun, wird dieser Fehler beim Start von Acitvity auf Geräten mit Android 3.0 und höher angezeigt:
Hier ist der Link zu diesem Originalartikel http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html, geschrieben von Chris Banes.
PS Entschuldigung für mein Englisch
quelle
Stellen Sie sicher, dass Sie keinen anderen Werteordner haben, der auf theme.styled verweist und kein AppCompat-Design verwendet
dh
values-v11
Ordnerquelle
Versuche dies...
styles.xml
AndroidManifest.xml
quelle
Ihr
Activity
erweitert,ActionBarActivity
was erfordertAppCompat.theme
, dass das angewendet wird. Wechseln Sie vonActionBarActivity
zuActivity
oderFragmentActivity
, um das Problem zu lösen.quelle
Mach es einfach Build -> Clean Project. Ich denke, das wird Ihr Problem lösen.
quelle
Sicher tut es das. Nichts wird auf magische Weise
Theme.Styled
auf eine Aktivität zutreffen . Sie müssen angeben, dass Ihre Aktivitäten - oder Ihre gesamte Anwendung - Folgendes verwendenTheme.Styled
: z.quelle
Dieser Fehler ist aufgetreten, als ich versucht habe, eine Dialogbox zu erstellen, wenn innerhalb der CustomAdapter-Klasse eine Aktion ausgeführt wurde. Dies war keine Aktivität, sondern eine Adapterklasse. Nach 36 Stunden Anstrengung und der Suche nach Lösungen kam ich auf diese Idee.
Senden Sie die Aktivität als Parameter, während Sie den CustomAdapter aufrufen.
Definieren Sie die Variablen im benutzerdefinierten Adapter.
Rufen Sie den Konstruktor so auf.
Und schließlich, wenn Sie das Dialogfeld innerhalb der Adapterklasse erstellen, gehen Sie wie folgt vor.
ich hoffe das hilft dir
quelle
Ich habe gerade meine Anwendung von ActionBarSherlock nach ActionBarCompat verschoben. Versuchen Sie, Ihr altes Thema folgendermaßen zu deklarieren:
Legen Sie dann das Thema in Ihrer AndroidManifest.xml fest:
quelle
Ich hatte einen solchen Absturz auf Samsung- Geräten, obwohl die Aktivität Theme.AppCompat verwendete . Die Hauptursache lag in seltsamen Optimierungen auf Samsung-Seite:
Meine Lösung war nur das Entfernen
android:launchMode="singleTask"
quelle
android:launchMode="singleTask"
.android:launchMode="singleTask"
und alle meine Aktivitäten verwenden AppCompat-Thema: /in meinem Fall habe ich eine benutzerdefinierte Ansicht i zu benutzerdefinierten Ansicht hinzugefügt Konstruktor
Der richtige Kontext ist Aktivität. Ändern Sie ihn in:
oder
quelle
Für meine Listenansicht verwende ich einen benutzerdefinierten Adapter, der ArrayAdapter erweitert. In der Listenansicht habe ich 2 Schaltflächen, eine der Schaltflächen als benutzerdefinierte AlertDialogBox. Beispiel: Aktivität parentActivity; Konstruktor für Adapter `
`Adapter von MainActivty aufrufen
Schreiben Sie jetzt Ihren Alarmdialog in die Schaltfläche, die sich in der Adapterklasse befindet
quelle
para resolver o meu problema, eu apenas adicionei na minha MainActivity ("Theme = Um mein Problem zu lösen, habe ich es einfach in meine MainActivity (" Theme = "@ style / MyTheme" ") eingefügt, wobei MyTheme der Name meines Themas ist
quelle