IllegalArgumentException: AppCompat 不支持当前的主题特性

我试图将一个项目从 Eclipse 迁移到 Android 工作室。最后我终于能够运行它了,但是在某个特定的时刻,我得到了这个例外,我在谷歌上找不到任何关于这个的东西:

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. 主要活动领域是:

setContentView(R.layout.activity_main);

如果可以的话,请给我一些建议。

63539 次浏览

拿开

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

然后确保从.NoActionBar 主题继承,然后像往常一样设置工具栏。

可以替代@sbaar 的回答,

保持 windowActionBarfalse,同时添加 windowNoTitle,并将其设置为 true

也就是说

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

检查是否在 super.onCreate()之后而不是之前调用 setContentView()。这对我的情况很有帮助。

确保你的主题是来自 Theme.AppCompat.NoActionBar的子主题,然后在 styles.xml:

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

Btw, it's a new issue for Support Library 22.1.

当我将库版本从22.0.0升级到22.1.1时,我也遇到了同样的问题,并且通过回到之前的版本来修复它: com.android.support: appcompat-v7:22.0.0,并且回到使用 ActionBarActivity,而不是在我的 Activity 类中使用新版本兼容库所要求的 AppCompatActivity。我晚点再试试。

只需要在 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);
}


}

在 Style.xml 中使用此父类 Rent = “ Theme. AppCompat. Light.NoActionBar”

Make sure that

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

对我来说,这是最重要的,祝你好运

在我的情况下,我没有改变到。 NoActionBar 主题。我只是删除这个项目的安卓前缀。

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

然后错误就消失了。

在 Java 类中,将 Main extends ActionBarActivity改为 Main extends Activity

像这样给等级增加依赖性

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

我通过扩展 AppCompatActivity 的主活动解决了这个问题:)

在我的例子中,我寻找@rewrihitesh 的答案,我注意到我从

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

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

解决我的问题。

希望能有帮助!

如果你加入了 <item name="windowActionBar">false</item>, then ,you need to add

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

来解决这个问题。

在某种程度上我也有同样的问题,如下所示从 syles.xml 中删除了 android:;

 <!-- 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>