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, как того требует более новая версия библиотеки совместимости. Я попробую еще раз позже.