java.lang.IllegalArgumentException: AppCompat mevcut tema özelliklerini desteklemiyor


109

Eclipse'den Android stüdyosuna bir proje taşımayı denedim. Sonunda çalıştırabiliyorum, ancak belirli bir noktada bu istisnayı aldım ve bununla ilgili google'da hiçbir şey bulamadım:

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 satırı:

setContentView(R.layout.activity_main);

Mümkünse bana tavsiye edin.


Bunu hiç görmediniz ama belki R.layout.activity_main'de Android API'nin farklı bir sürümünü gerektiren bir özelliği kullanıyorsunuz? - Android Studio size bunları anlatmaktan
hoşlansa da

theme.xml veya style.xml dosyanızı ve activity_main.xml
dosyasını gönderin

.Gradle dosyalarınızı da buraya koyabilir misiniz? Muhtemelen eski bir uygulama uyumluluğuna mı güveniyorsunuz?
RaphMclee

Yanıtlar:


233

@ sbaar'ın cevabına alternatif,

tutmak windowActionBariçin falseve eklemek windowNoTitleyanı ve ayarlayın true.

yani

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

4
Bugün en son appcompt'a (22.1) güncelledikten sonra bunu uygulamamda yapmak zorunda kaldım. tüm değiştirdiğim bu ve uygulamam şimdi tekrar çalışıyor.
SteelBytes

4
bu garip, ancak
ActionBarActivity

5
Bu cevap benim için işe yaramadı. Yalnızca @sbaar yanıtı çalıştı. Temanız şunlardan miras almalıdır: Theme.AppCompat.NoActionBar şunlara ek olarak: <item name = "windowActionBar"> false </item> ve <item name = "windowNoTitle"> true </item>
blueware

1
Bu, NoActionBartarzı bir alternatifi olmayan temalar için işe yarar. Theme.AppCompat.Light.Dialog
Örneğimde

1
Bu, Theme.AppComapt.NoActionBar'dan devralırken çalışır. Mükemmel!
Tarık

41

Kaldırmak

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

Temanızdan .NoActionBar Temasından miras aldığınızdan emin olun, ardından araç çubuğunuzu normal gibi ayarlayın.


1
Ve neden bir şeyi değiştirmeliyim? Bu proje aylardır tutulmayla çok iyi geçti.
Adam Varhegyi

3
Çünkü birkaç saat önce Google, destek kitaplığının 22.1 sürümünü yayınladı ve bu soruna projenizde (ve benimkinde de) neden oldu. Bu sadece bir tesadüf, Android Studio'ya geçiş yüzünden değil.
jmart

3
Benim için temayı .NoActionBar'dan devralmak anahtardı, öğe kaldırmaya gerek yoktu.
Sergey Aldoukhov

30

Temanızın alt öğe olduğundan emin olun Theme.AppCompat.NoActionBar, daha sonra styles.xml:

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

Btw, Destek Kitaplığı 22.1 için yeni bir sorun.


@QadirHussain, Hayır, yapmadı.
Anggrayudi H

AppCompat.NoActionBar tüm textView rengimi beyaz yaptı bunun yerine Theme.AppCompat.Light.NoActionBar'ı kullanın
Sahu


16

Daha önce değil setContentView()sonra arayıp aramadığınızı kontrol edin super.onCreate(). Bu benim durumumda yardımcı oldu.


WindowNoTitle ve windowActionBar vardı, ancak yine de çalışmadı. Bu benim için düzeltti. Teşekkürler!
avb


3

benim durumumda .NoActionBar Temasına geçmedim. Bu öğeden android önekini kaldırdım.

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

ve hata ortadan kalkar.


bahsetme. yorumunuzu görmekten mutluyum.
Setmax

3

Emin olun

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

benim için işe yarayan her şeyin başında geliyor .... iyi şans



1

Sorunu, AppCompatActivity'yi genişleten ana etkinliğimle çözdüm :)


1

android:Aşağıda gösterildiği gibi syles.xml dosyamdan kaldırılan aynı sorunu yaşadım;

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

Kitaplık sürümünü 22.0.0'dan 22.1.1'e yükselttiğimde ve önceki sürüme geri bırakarak düzelttiğimde aynı sorunu yaşadım: com.android.support:appcompat-v7:22.0.0 ve ActionBarActivity'yi kullanmaya geri döndüm. Uyumluluk kitaplığının yeni sürümünün gerektirdiği şekilde Etkinlik sınıflarımdaki AppCompatActivity değil. Daha sonra tekrar deneyeceğim.


0

Bunu style.xml dosyanızda kullanın, başka bir düzenlemeye gerek yoktur

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

etkinlik dosyasına bir şey eklemeyin lütfen bırakın

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

Java sınıfı değişikliklerinde Main extends ActionBarActivityiçin Main extends Activity. Benim için çalıştı.


0

Benim durumumda, @rewrihitesh cevabını aradım ve elementlerin sırasını tersine çevirdiğimi fark ettim . Dan değiştirme

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

için

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

Sorunumu çöz.

Umarım yardımcı olur !!


0

eklediyseniz <item name="windowActionBar">false</item>, eklemeniz gerekir

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

sorunu çözmek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.