web-dev-qa-db-ja.com

java.lang.IllegalArgumentException:AppCompatは現在のテーマ機能をサポートしていません

プロジェクトをEclipseからAndroid studioに移行しようとしました。最後にそれを実行することができますが、特定の時点でこの例外が発生し、グーグルでこれについて何も見つかりませんでした:

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

可能であればアドバイスしてください。

107
Adam Varhegyi

@sbaarの答えに代わるもの、

windowActionBarfalseに維持し、windowNoTitleasも追加して、trueに設定します。

すなわち

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

削除する

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

テーマから、.NoActionBarテーマから継承していることを確認してから、ツールバーを通常のように設定します。

39
sbaar

テーマがTheme.AppCompat.NoActionBarの子であることを確認してから、styles.xmlで:

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

ところで、これはサポートライブラリ22.1の新しい問題です。

29
Anggrayudi H

SetContentView()を呼び出す前にではなく、super.onCreate()の後に呼び出すかどうかを確認します。これは私の場合に役立ちました。

16
wilddev

Style.xmlでこの親を使用するparent = "Theme.AppCompat.Light.NoActionBar"

5
atrivedi

確認してください

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

これが私のために働くすべての一番上にある....幸運

3
rewrihitesh

私の場合、.NoActionBarテーマに変更しませんでした。このアイテムからAndroidプレフィックスを削除します。

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

エラーはなくなります。

3
Setmax

このようにgradleに依存関係を追加します

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

AppCompatActivityを拡張するメインアクティビティで問題を解決しました:)

1
russellhoff

Javaクラスで、Main extends ActionBarActivityMain extends Activityに変更します。それは私のために働いた。

以下のように、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>
0
BENN1TH

私の場合、@ rewrihiteshの答えを探しますが、私はinverted elements orderであることに気付きました。からの変更

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

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

私の問題を修正してください。

それが役に立てば幸い !!

0

<item name="windowActionBar">false</item>を追加した場合は、追加する必要があります

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

この問題を解決するために。

0
user6088902

ライブラリバージョンを22.0.0から22.1.1にアップグレードし、以前のバージョンにドロップして修正したときに同じ問題が発生しました:com.Android.support:appcompat-v7:22.0.0に戻り、ActionBarActivityの使用に戻ります。互換性ライブラリの新しいバージョンで必要なアクティビティクラスのAppCompatActivityではありません。後でもう一度やります。

0
Gail

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

 }
0
Ribin Haridas