java.lang.IllegalArgumentException: AppCompat tidak mendukung fitur tema saat ini

109

Saya mencoba memigrasi proyek dari Eclipse ke studio Android. Akhirnya saya dapat menjalankannya, tetapi pada titik tertentu saya mendapat pengecualian ini, dan saya tidak menemukan apa pun di google tentang ini:

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. baris MainActivity adalah:

setContentView(R.layout.activity_main);

Tolong beri tahu saya jika Anda bisa.

Adam Varhegyi
sumber
Belum pernah melihat ini, tetapi mungkin Anda menggunakan fitur di R.layout.activity_main yang memerlukan Android API versi berbeda? - Meskipun Android Studio suka memberi tahu Anda tentang hal-hal itu ... Goodluck
Sudah
posting theme.xml atau style.xml Anda dan activity_main.xml
Charaf Eddine Mechalikh
Bisakah Anda meletakkan file .gradle Anda di sini juga? Anda mungkin bergantung pada appcompat lama?
RaphMclee

Jawaban:

233

alternatif dari jawaban @ sbaar,

terus windowActionBaruntuk falsedan menambahkan windowNoTitlejuga dan set ke true.

yaitu

   <item name="windowActionBar">false</item>
   <item name="windowNoTitle">true</item>
SteelBytes
sumber
4
Saya harus melakukan ini ke aplikasi saya setelah memperbarui ke appcompt terbaru (22.1) hari ini. hanya itu yang telah saya ubah dan aplikasi saya sekarang berfungsi kembali.
SteelBytes
4
itu aneh, tetapi berfungsi setelah sakelar ActionBarActivity -> AppCompatActivity
pawegio
5
Jawaban ini tidak berhasil untuk saya. Hanya jawaban @sbaar yang berhasil. Tema Anda harus mewarisi dari: Theme.AppCompat.NoActionBar selain dari: <item name = "windowActionBar"> false </item> dan <item name = "windowNoTitle"> true </item>
blueware
1
Ini berfungsi untuk tema yang tidak memiliki alternatif NoActionBargaya. Dalam contoh saya, ini berfungsi untukTheme.AppCompat.Light.Dialog
dobridog
1
Ini berfungsi saat mewarisi dari Theme.AppComapt.NoActionBar. Sempurna!
Tariq
41

Menghapus

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

dari tema Anda, lalu pastikan Anda mewarisi dari .NoActionBar Theme, lalu setel bilah alat seperti biasa.

sbaar
sumber
1
Dan mengapa saya harus memodifikasi sesuatu? Proyek ini berjalan sangat baik dengan gerhana selama berbulan-bulan.
Adam Varhegyi
3
Karena beberapa jam yang lalu Google merilis versi 22.1 dari pustaka dukungan, menyebabkan masalah ini dalam proyek Anda (dan di proyek saya juga). Itu hanya kebetulan, bukan karena migrasi ke Android Studio.
jmart
3
Bagi saya, mewarisi tema dari .NoActionBar adalah kuncinya, tidak diperlukan penghapusan elemen.
Sergey Aldoukhov
30

Pastikan tema Anda berasal dari anak Theme.AppCompat.NoActionBar, lalu di styles.xml:

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

Btw, ini masalah baru untuk Support Library 22.1.

Anggrayudi H
sumber
@QadirHussain, Tidak, tidak.
Anggrayudi H
AppCompat.NoActionBar menjadikan semua warna textView saya putih menggunakan Theme.AppCompat.Light.NoActionBar sebagai gantinya
Hitesh Sahu
Masih tidak berfungsi stackoverflow.com/questions/45643107/…
Ruchir Baronia
16

Periksa apakah Anda menelepon setContentView()setelah super.onCreate(), dan bukan sebelumnya. Ini membantu dalam kasus saya.

wilddev
sumber
Memiliki windowNoTitle dan windowActionBar tetapi masih tidak berfungsi. Ini memperbaikinya untuk saya. Terima kasih!
rata
3

dalam kasus saya, saya tidak mengubah ke .NoActionBar Theme. saya baru saja menghapus awalan android dari item ini.

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

dan kesalahan itu hilang.

Setmax
sumber
jangan sebutkan itu. senang melihat komentar anda
Setmax
3

Pastikan bahwa

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

berada di atas segalanya, ini bekerja untuk saya .... semoga berhasil

rewrihitesh
sumber
1

tambahkan ketergantungan pada gradle seperti ini

compile 'com.android.support:appcompat-v7:21.0.3'
Saurabh Chandra Patel
sumber
1

Saya memecahkan masalah ini dengan Activity utama saya memperluas AppCompatActivity :)

russellhoff
sumber
1

Saya memiliki masalah yang sama, dihapus android:dari syles.xml saya seperti di bawah ini;

 <!-- 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>
KEBENARAN
sumber
0

Saya memiliki masalah yang sama ketika saya meningkatkan versi pustaka dari 22.0.0 menjadi 22.1.1 dan memperbaikinya dengan kembali ke versi sebelumnya: com.android.support:appcompat-v7:22.0.0 dan kembali menggunakan ActionBarActivity, bukan AppCompatActivity di kelas Aktivitas saya seperti yang diharuskan oleh versi pustaka kompatibilitas yang lebih baru. Saya akan coba lagi nanti.

Gail
sumber
0

cukup Gunakan ini di style.xml Anda tidak perlu pengeditan lain

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

jangan menambahkan apapun ke file aktivitas, silakan tinggalkan

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

 }
Ribin Haridas
sumber
0

Di kelas Java, ubah Main extends ActionBarActivitymenjadi Main extends Activity. Itu berhasil untuk saya.

شبير البلوشي
sumber
0

Dalam kasus saya, saya mencari jawaban @rewrihitesh, dan saya perhatikan bahwa saya membalik urutan elemen . Berubah dari

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

untuk

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

Perbaiki masalah saya.

Semoga membantu !!

Gueorgui Obregon
sumber
0

jika Anda telah menambahkan <item name="windowActionBar">false</item>, maka Anda perlu menambahkan

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

untuk memecahkan masalah.


sumber