Auf AppCompat v22.1.0 aktualisiert und jetzt mit IllegalArgumentException: AppCompat unterstützt die aktuellen Designfunktionen nicht
Lesezeit: 4 Minuten
Chris Banes
Ich habe gerade meine App aktualisiert, um die neu veröffentlichte Version 22.1.0 von AppCompat zu verwenden, und ich erhalte jetzt die folgende Ausnahme, wenn ich meine App öffne.
Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
Wie kann ich es beheben?
Chris Banes
AppCompat ist jetzt strenger in Bezug auf das, was es in Themenfenster-Flags erwartet, und passt besser zu dem, was Sie vom Framework erhalten würden.
Der Hauptgrund dafür ist die Unterstützung AppCompatDialogs die wir auch in dieser Version hinzugefügt haben. Sie machen starken Gebrauch von der windowNoTitle Flag, dem AppCompat zuvor nicht viel Aufmerksamkeit geschenkt hat.
Um Ihr Problem zu beheben, haben Sie also zwei Möglichkeiten:
Der einfache Weg ist, einfach zu verwenden Theme.AppCompat.NoActionBar als übergeordnetes Thema. Dies wird immer das Richtige tun.
Wenn Sie dies jedoch nicht tun können (möglicherweise müssen Sie die Aktionsleiste und keine Aktionsleiste unterstützen), sollten Sie Folgendes tun:
<style name="MyTheme" parent="Theme.AppCompat">
...
</style>
<style name="MyTheme.NoActionBar">
<!-- Both of these are needed -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Du solltest jetzt wieder auf Kurs sein.
Diese Informationen sollten besser in den Appcompat-Versionshinweisen stehen 😉
– Veaceslav Gaidarji
22. April 2015 um 12:20 Uhr
Wenn jemand feststellt, dass nach dem Ausprobieren beider Optionen die Ausnahme weiterhin besteht, stellen Sie sicher, dass Ihre Aktivität setContentView nach super.onCreate aufruft, nicht vorher. Ich habe es zuvor für andere Zwecke aufgerufen, aber ich musste es ändern, um den Fehler zu vermeiden.
– jmart
22. April 2015 um 17:49 Uhr
In meinem Fall musste ich true, das ich zuvor definiert hatte, in true ändern, um die Ausnahme zu beseitigen.
– Gemeiner Mann
23. April 2015 um 12:29 Uhr
@ChrisBanes: Sie haben bei Google mit Android gearbeitet – vielleicht können Sie das Team davon überzeugen, in Zukunft ausführlichere Versionshinweise zu veröffentlichen. Auf diese Weise können Android-Entwickler Fehler mit Android-Designfunktionen selbst beheben, anstatt zur Kompilierzeit auf die Fehler zu stoßen.
– Benutzer4750643
23. April 2015 um 16:13 Uhr
Beachten Sie, dass Sie diese Änderung wahrscheinlich sowohl in der Haupt-XML-Datei für Stile/Designs als auch in der v21-Version vornehmen müssen. Hast mich erwischt.
– rfay
23. April 2015 um 19:29 Uhr
Adnan
Diejenigen, die nach all diesen Fixes immer noch Fehler bekommen.
Fügen Sie nichts zur Aktivitätsdatei hinzu, sondern belassen Sie es
public class Main extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
9164200cookie-checkAuf AppCompat v22.1.0 aktualisiert und jetzt mit IllegalArgumentException: AppCompat unterstützt die aktuellen Designfunktionen nichtyes