java.lang.IllegalArgumentException : AppCompat는 현재 테마 기능을 지원하지 않습니다.


109

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

당신이 할 수 있다면 저에게 조언하십시오.


이것을 본 적이 없지만 다른 버전의 Android API가 필요한 R.layout.activity_main의 기능을 사용하고 있습니까? - 비록 안드로이드 스튜디오 것들 ... goodluck는에 대해 얘기하기를 좋아
Gready

당신의 theme.xml 또는 style.xml과 activity_main.xml 게시
Charaf Eddine Mechalikh

.gradle 파일도 여기에 넣을 수 있습니까? 아마도 오래된 appcompat에 의존합니까?
RaphMclee 2015-04-22

답변:


233

@sbaar의 대답에 대한 대안,

유지 windowActionBarfalse하고 추가 windowNoTitle로 잘으로 설정합니다 true.

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

4
오늘 최신 appcompt (22.1)로 업데이트 한 후 내 앱에이 작업을 수행해야했습니다. 그게 내가 변경 한 전부이며 이제 내 앱이 다시 작동합니다.
SteelBytes

4
이상하지만 ActionBarActivity-> AppCompatActivity 스위치 후에 작동합니다
pawegio

5
이 대답은 저에게 효과가 없었습니다. @sbaar 답변 만 작동했습니다. 그 외에 Theme.AppCompat.NoActionBar : 귀하의 테마를 상속한다 <항목 이름 = "windowActionBar"> 거짓 </ 항목>와 <항목 이름 = "windowNoTitle"> 진정한 </ 항목>
blueware

1
NoActionBar스타일에 대안이없는 테마에 적용 됩니다. 내 예에서는 작동합니다Theme.AppCompat.Light.Dialog
dobridog

1
이것은 Theme.AppComapt.NoActionBar에서 상속 할 때 작동합니다. 완전한!
Tariq 2015

41

없애다

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

테마에서 상속 한 다음 .NoActionBar 테마에서 상속하는지 확인한 다음 툴바를 평소처럼 설정합니다.


1
그리고 왜 내가 무언가를 수정해야합니까? 이 프로젝트는 몇 달 동안 일식과 잘 어울 렸습니다.
Adam Varhegyi

3
몇 시간 전에 Google이 지원 라이브러리 버전 22.1을 출시했기 때문에 귀하의 프로젝트 (및 저의 경우)에서이 문제가 발생했습니다. Android Studio 로의 마이그레이션 때문이 아니라 우연의 일치 일뿐입니다.
jmart 2015-04-22

3
나에게는 .NoActionBar에서 테마를 상속하는 것이 핵심이었고 요소 제거가 필요하지 않았습니다.
Sergey Aldoukhov 2015

30

테마가의 하위 항목인지 확인한 Theme.AppCompat.NoActionBar다음 styles.xml:

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

Btw, 지원 라이브러리 22.1의 새로운 문제입니다.


@QadirHussain, 아니, 그렇지 않았습니다.
Anggrayudi H

AppCompat.NoActionBar 대신 내 모든 텍스트 뷰 색상 흰색 사용 Theme.AppCompat.Light.NoActionBar했다
Hitesh Sahu에게

여전히 작동하지 않습니다 stackoverflow.com/questions/45643107/…
Ruchir Baronia

16

이전이 아닌 setContentView()이후 super.onCreate()에 전화했는지 확인하십시오 . 이것은 제 경우에 도움이되었습니다.


windowNoTitle 및 windowActionBar가 있었지만 여전히 작동하지 않았습니다. 이것은 나를 위해 그것을 고쳤습니다. 감사!
avb


3

제 경우에는 .NoActionBar 테마로 변경하지 않았습니다. 이 항목에서 Android 접두사를 제거합니다.

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

오류가 사라집니다.


언급하지 마십시오. 귀하의 의견을 기쁘게 생각합니다.
Setmax

3

확인하십시오

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

이것이 나를 위해 일하는 모든 것의 상단에 있습니다 .... 행운을 빕니다



1

AppCompatActivity를 확장하는 주요 활동으로 문제를 해결했습니다. :)


1

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>

0

라이브러리 버전을 22.0.0에서 22.1.1로 업그레이드하고 이전 버전 인 com.android.support:appcompat-v7:22.0.0으로 다시 돌아가서 ActionBarActivity를 사용하여 문제를 해결했습니다. 최신 버전의 호환성 라이브러리에서 요구하는대로 내 Activity 클래스의 AppCompatActivity가 아닙니다. 나중에 다시 시도하겠습니다.


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

 }


0

제 경우에는 @rewrihitesh 답변을 찾고 요소 순서 를 뒤집 었음을 알았습니다 . 다음에서 변경

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>

문제를 해결하기 위해.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.