java.lang.IllegalArgumentException: AppCompat не поддерживает текущие функции темы

Я попытался перенести проект из Eclipse в Android-студию. Наконец, я могу запустить его, но в определенный момент я получил это исключение, и я ничего не нашел в Google по этому поводу:

04-22 00:08:15.484    9891-9891/hu.illion.kwindoo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{hu.illion.kwindoo/hu.illion.kwindoo.activity.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...    
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)
    at hu.illion.kwindoo.activity.MainActivity.onCreate(MainActivity.java:73)
    at android.app.Activity.performCreate(Activity.java:5047)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
    ...

73. Линия MainActivity это:

setContentView(R.layout.activity_main);

Пожалуйста, посоветуйте мне, если можете.

15 ответов

Решение

Альтернатива ответу @sbaar,

держать windowActionBar в false и добавить windowNoTitleа также и установите его true,

т.е.

   <item name="windowActionBar">false</item>
   <item name="windowNoTitle">true</item>

Удалить

<item name="windowActionBar">false</item>

от вашей темы, затем убедитесь, что вы наследуете от темы.NoActionBar, затем установите панель инструментов как обычно.

Убедитесь, что ваша тема от Theme.AppCompat.NoActionBar, затем в styles.xml:

<style name="MyMaterialTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="windowNoTitle">true</item>
        ...
</style>

Кстати, это новая проблема для библиотеки поддержки 22.1.

Проверьте, вызываете ли вы setContentView() после super.onCreate(), а не раньше. Это помогло в моем случае.

Используйте этого родителя в Style.xml parent="Theme.AppCompat.Light.NoActionBar"

В моем случае я не изменился на.NoActionBar Theme. Я просто удалил префикс Android из этого пункта.

<item name="windowActionBar">false</item>

и ошибка уходит.

Удостоверься что

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

на вершине всего это работает для меня.... удачи

Если вы добавили <item name="windowActionBar">false</item>то вам нужно добавить

<item name="windowNoTitle">true</item>

решить проблему.

Я решил проблему своей основной деятельностью, расширяющей AppCompatActivity:)

У меня была такая же проблема, несколько удалили android: из моего syles.xml согласно ниже;

 <!-- caused crash -->
 <item name="android:windowActionBar">false</item>
 <item name="android:windowNoTitle">true</item>

 <!-- didn't cause crash -->
 <item name="windowActionBar">false</item>
 <item name="windowNoTitle">true</item>

Добавить зависимость для gradle, как это

compile 'com.android.support:appcompat-v7:21.0.3'

В моем случае я ищу ответ @rewrihitesh и замечаю, что я перевернул порядок элементов. Изменение от

setContentView(R.layout.activity_test);
super.onCreate(savedInstanceState);

в

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

Исправь мою проблему.

Надеюсь, поможет!!

Просто используйте это в вашем style.xml никакое другое редактирование не требуется

 <style name="AppTheme" parent="Theme.AppCompat">

<!-- theme customizations -->

<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

не добавляйте ничего в файл активности, пожалуйста, оставьте его

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);
}

 }

В Java изменение класса Main extends ActionBarActivity в Main extends Activity, Это сработало для меня.

У меня была та же проблема, когда я обновил версию библиотеки с 22.0.0 до 22.1.1 и исправил ее, вернувшись к предыдущей версии: com.android.support:appcompat-v7:22.0.0 и вернувшись к использованию ActionBarActivity, не AppCompatActivity в моих классах Activity, как того требует более новая версия библиотеки совместимости. Я попробую еще раз позже.

Другие вопросы по тегам