java.lang.IllegalArgumentException: AppCompat không hỗ trợ các tính năng chủ đề hiện tại


109

Tôi đã cố gắng di chuyển một dự án từ Eclipse sang Android studio. Cuối cùng, tôi có thể chạy nó, nhưng tại một thời điểm nhất định, tôi đã nhận được ngoại lệ này và tôi không tìm thấy gì trên google về điều này:

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. dòng của MainActivity là:

setContentView(R.layout.activity_main);

Xin hãy tư vấn cho tôi nếu bạn có thể.


Chưa bao giờ thấy điều này nhưng có lẽ bạn đang sử dụng một tính năng trong R.layout.activity_main yêu cầu phiên bản khác của Android API? - Mặc dù Android Studio thích nói với bạn về những điều đó ... Goodluck
Đã có

gửi theme.xml của bạn hoặc style.xml và activity_main.xml
Charaf Eddine Mechalikh

Bạn cũng có thể đặt các tệp .gradle của mình vào đây chứ? Bạn có thể phụ thuộc vào một máy tính ứng dụng cũ?
RaphMclee

Câu trả lời:


233

thay thế cho câu trả lời của @ sbaar,

giữ windowActionBarđến falsevà thêm windowNoTitlecũng và đặt nó vào true.

I E

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

4
Tôi đã phải thực hiện việc này với ứng dụng của mình sau khi cập nhật lên appcompt mới nhất (22.1) hôm nay. đó là tất cả những gì tôi đã thay đổi và ứng dụng của tôi hiện hoạt động trở lại.
SteelBytes

4
điều đó thật kỳ lạ, nhưng hoạt động sau khi chuyển đổi ActionBarActivity
pawegio

5
Câu trả lời này không làm việc cho tôi. Chỉ câu trả lời @sbaar hoạt động. Chủ đề của bạn nên kế thừa từ: Theme.AppCompat.NoActionBar ngoài những thứ đó: <item name = "windowActionBar"> false </item> và <item name = "windowNoTitle"> true </item>
blueware

1
Điều này phù hợp với các chủ đề không có NoActionBarphong cách thay thế . Trong ví dụ của tôi, nó hoạt động choTheme.AppCompat.Light.Dialog
dobridog

1
Điều này hoạt động khi kế thừa từ Theme.AppComapt.NoActionBar. Hoàn hảo!
Tariq,

41

Tẩy

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

từ chủ đề của bạn, sau đó đảm bảo rằng bạn đang kế thừa từ Chủ đề .NoActionBar, sau đó đặt thanh công cụ của bạn như bình thường.


1
Và tại sao tôi nên sửa đổi một thứ? Dự án này đã rất tốt với nhật thực trong nhiều tháng.
Adam Varhegyi

3
Bởi vì vài giờ trước, Google đã phát hành phiên bản 22.1 của thư viện hỗ trợ, gây ra sự cố này trong dự án của bạn (và cả trong dự án của tôi). Đó chỉ là sự trùng hợp ngẫu nhiên, không phải do việc chuyển sang Android Studio.
jmart

3
Đối với tôi, kế thừa chủ đề từ .NoActionBar là chìa khóa, không cần loại bỏ phần tử.
Sergey Aldoukhov

30

Đảm bảo rằng chủ đề của bạn là trẻ em Theme.AppCompat.NoActionBar, sau đó trong styles.xml:

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

Btw, đây là một vấn đề mới cho Thư viện hỗ trợ 22.1.


@QadirHussain, Không, không.
Anggrayudi H

Thay vào đó, AppCompat.NoActionBar đã tạo tất cả văn bản của tôiXem màu trắng sử dụng Theme.AppCompat.Light.NoActionBar
Hitesh Sahu


16

Kiểm tra xem bạn có gọi setContentView()sau super.onCreate()hay không trước. Điều này đã giúp trong trường hợp của tôi.


Đã có windowNoTitle và windowActionBar nhưng vẫn không hoạt động. CÁi này đã sửa nó giúp tôi. Cảm ơn!
trung bình


3

trong trường hợp của tôi, tôi đã không đổi sang Chủ đề .NoActionBar. tôi chỉ xóa tiền tố android khỏi mục này.

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

và lỗi sẽ biến mất.


không đề cập đến nó. rất vui khi thấy bình luận của bạn.
Setmax

3

Đảm bảo rằng

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

đứng đầu tất cả mọi thứ mà điều này làm việc cho tôi .... chúc may mắn



1

Tôi đã giải quyết sự cố bằng Hoạt động chính của mình mở rộng AppCompatActivity :)


1

Tôi đã gặp vấn đề tương tự một chút, đã bị xóa android:khỏi syles.xml của tôi như bên dưới;

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

Tôi gặp sự cố tương tự khi nâng cấp phiên bản thư viện từ 22.0.0 lên 22.1.1 và khắc phục sự cố bằng cách quay lại phiên bản trước: com.android.support:appcompat-v7:22.0.0 và quay lại sử dụng ActionBarActivity, không phải AppCompatActivity trong các lớp Hoạt động của tôi theo yêu cầu của phiên bản mới hơn của thư viện tương thích. Tôi sẽ thử lại sau.


0

chỉ cần sử dụng cái này trong style của bạn. xml không cần chỉnh sửa gì khác

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

không thêm bất cứ điều gì vào tệp hoạt động, vui lòng để lại 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

Trong trường hợp của tôi, tôi tìm kiếm câu trả lời @rewrihitesh và tôi nhận thấy rằng tôi đã đảo ngược thứ tự các phần tử . Thay đổi từ

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

đến

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

Khắc phục sự cố của tôi.

Hy vọng nó giúp !!


0

nếu bạn đã thêm <item name="windowActionBar">false</item>, thì bạn cần thêm

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

để giải quyết vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.