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

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

Ответ 1

альтернативный ответ @sbaar,

сохраните windowActionBar до false и добавьте windowNoTitle, а затем установите true.

т

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

Ответ 2

Удалите

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

Используйте этот родительский элемент в Style.xml Родитель = "Theme.AppCompat.Light.NoActionBar"

Ответ 6

Убедитесь, что

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

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

Ответ 7

в моем случае я не изменился на .NoActionBar Theme. я просто удаляю андроидный префикс из этого элемента.

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

и ошибка исчезнет.

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

Просто используйте это в своем стиле .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);
}

 }

Ответ 12

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

Ответ 13

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

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

to

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

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

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

Ответ 14

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

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

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