2017-09-16 1 views
-3

Meine App verwendet AppCompat nicht, da meine minSdkVersion15 ist. Ich möchte smart-app-rate library in es benutzen, aber ich bin immer (was zu erwarten ist):Wie verwende ich die AppCompat-Bibliothek in meiner App, die nicht AppCompat ist?

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

Bitte beachten Sie, dass ich nicht meine App AppCompat ändern kann, weil A) gibt es keine wirkliche Notwendigkeit und B), wenn ich tun Meine App sieht ganz anders aus als sie sollte.

Also, ich habe versucht, die Bibliothek als ZIP herunterladen und transformierte es AppCompat nicht zu verwenden. Ich habe die Schritte ausgeführt, die in this answer erwähnt werden, aber jetzt bekomme ich eine ganze Reihe von Fehlern (wie ContextCompat.getColor, die ich mit Nicht-AppCompat-Funktion ersetzen müsste) und ich bin nicht sicher, ob dies der richtige Weg ist, dies zu tun.

Wie löse ich das einfach?

+0

Es gibt keine "wenn Ihr min SDK größer als X ist, dann sollten Sie keine AppCompat-Anweisung verwenden". Es wird empfohlen, die Supportbibliotheken zu verwenden (insbesondere, wenn Ihr min SDK <21 ist, da die APIs stark voneinander abweichen), da die Supportkomponenten eine einheitliche Schnittstelle für die Interaktion mit Elementen bereitstellen, ohne dass der Entwickler bestimmte API-Anforderungen überprüfen muss. Wenn Sie "Theme.AppCompat" als übergeordnetes Format für Ihr aktuelles App-Design definieren, ändert sich auch das Aussehen und Verhalten, so dass mit Ihrem aktuellen Ansatz wahrscheinlich etwas nicht stimmt. –

+0

@ GergelyKőrössy, danke; offensichtlich fehlt mir etwas Wissen und muss neu gelesen werden. Wenn ich meine App für die Verwendung von AppCompat ändere, [dies ist der Unterschied] (https://i.imgur.com/aLCVaMJ.jpg). Es sieht wirklich schlecht aus und sogar die Schieberegler fehlen. Hast du einen Tipp, wo ich weiter in meinem Code nachsehen sollte? –

+0

Welche Art von Komponenten sind das? Die appbar-Textfarbe kann behoben werden, indem Sie 'Theme.AppCompat.Light.DarkActionBar' als Ihr Elternelement verwenden. –

Antwort

1

aber jetzt bekomme ich eine ganze Reihe von Fehlern (wie ContextCompat.getColor, die ich brauchen würde, mit nicht-AppCompat Funktion ersetzen) mit appcompat-v7 zu tun

ContextCompat hat nichts. ContextCompat kommt von support-compat, und ich empfehle dringend die Verwendung der support-compat Artefakt.

und ich bin mir nicht sicher, ob dies der richtige Weg ist, dies zu tun.

Sie könnten die Bibliothek einfach nicht verwenden. Andernfalls haben Sie keine andere Wahl, als es zu portieren, um die Verwendung von appcompat-v7 zu entfernen.

+0

Danke für die Ausarbeitung. Ich entschied mich, meine App in 'AppCompat' umzuwandeln, da mir diese Bibliothek wirklich gefällt. –

Verwandte Themen