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.