java.lang.IllegalArgumentException:AppCompat不支持当前的主题功能

时间:2015-04-21 22:13:52

标签: java android eclipse android-studio

我尝试将项目从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。 MainActivity的一行是:

setContentView(R.layout.activity_main);

如果可以,请告诉我。

15 个答案:

答案 0 :(得分:224)

替代@ sbaar的回答,

windowActionBar保留到false并添加windowNoTitle并将其设置为true

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

答案 1 :(得分:39)

删除

<item name="windowActionBar">false</item>
从您的主题

,然后确保您继承自.NoActionBar主题,然后像平常一样设置您的工具栏。

答案 2 :(得分:29)

确保您的主题是来自Theme.AppCompat.NoActionBar的儿童,然后是styles.xml

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

顺便说一句,这是支持库22.1的新问题。

答案 3 :(得分:16)

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

答案 4 :(得分:5)

在Style.xml中使用此父级 父=&#34; Theme.AppCompat.Light.NoActionBar&#34;

答案 5 :(得分:3)

确保

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

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

答案 6 :(得分:3)

在我的情况下,我没有改变.NoActionBar主题。我只是从这个项目中删除了android前缀。

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

并且错误消失了。

答案 7 :(得分:1)

像这样添加依赖于gradle

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

答案 8 :(得分:1)

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

答案 9 :(得分:0)

当我将库版本从22.0.0升级到22.1.1并通过回退到先前版本修复它时遇到了同样的问题:com.android.support:appcompat-v7:22.0.0并返回到使用ActionBarActivity,而不是我的Activity类中的AppCompatActivity,这是兼容性库的较新版本所要求的。我稍后再试。

答案 10 :(得分:0)

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

 }

答案 11 :(得分:0)

在Java类中将Main extends ActionBarActivity更改为Main extends Activity。它对我有用。

答案 12 :(得分:0)

在我的情况下,我寻找@rewrihitesh的答案,我注意到我倒置元素顺序。改变

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

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

解决我的问题。

希望它有所帮助!!

答案 13 :(得分:0)

如果您添加了<item name="windowActionBar">false</item>, 那么,你需要添加

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

解决问题。

答案 14 :(得分:0)

我有点同样的问题,如下所述从我的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>