2015-09-27 87 views
0

升級到AppCompat版本22後出現以下錯誤。升級到v22後,AppCompat不支持當前主題功能

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features 
     at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:363) 
     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246) 
     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) 

以下是styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"> 

    <!-- 
     Base application theme, dependent on API level. This theme is replaced 
     by AppBaseTheme from res/values-vXX/blah.xml on newer devices. 
    --> 
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/blah.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

    <style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
    </style> 

    <style name="topBarLeftIcon"> 
     <item name="android:paddingLeft">@dimen/top_bar_left_icon_left_padding_default</item> 
     <item name="android:paddingRight">@dimen/top_bar_left_icon_right_padding_default</item> 
     <item name="android:paddingTop">@dimen/top_bar_left_icon_top_padding_default</item> 
     <item name="android:paddingBottom">@dimen/top_bar_left_icon_bottom_padding_default</item> 
    </style> 

    <style name="editTextStyle"> 
     <item name="android:padding">@dimen/edit_text_padding_default</item> 
    </style> 

    <style name="Divider1"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/default_divider_color1</item> 
    </style> 

    <style name="Divider2"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/default_divider_color2</item> 
    </style> 

    <style name="Divider3"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/default_divider_color3</item> 
    </style> 

    <style name="VerticalDivider2"> 
     <item name="android:layout_width">1dp</item> 
     <item name="android:layout_height">match_parent</item> 
     <item name="android:background">@color/default_divider_color2</item> 
    </style> 


    <style name="CustomActionBar" parent="Theme.AppCompat.Light"> 
     <item name="android:actionBarStyle" tools:ignore="NewApi">@style/HomeActionBar</item> 
     <item name="android:actionMenuTextColor" tools:ignore="NewApi">@color/actionBarTitleColor</item> 
     <item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/up_icon</item> 

     <item name="actionBarStyle">@style/HomeActionBar</item> 
     <item name="actionMenuTextColor">@color/actionBarTitleColor</item> 
     <item name="homeAsUpIndicator">@drawable/up_icon</item> 

     <item name="windowActionModeOverlay">true</item> 
     <item name="colorPrimary">@color/bgBlue1</item> 
     <item name="colorPrimaryDark">@color/bgBlue1</item> 

    </style> 

    <style name="HomeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 

     <item name="android:background" tools:ignore="NewApi">@drawable/action_bar_blue</item> 
     <item name="background">@drawable/action_bar_blue</item> 
     <item name="android:titleTextStyle" tools:ignore="NewApi">@style/HomeActionBar.Text</item> 
     <item name="titleTextStyle">@style/HomeActionBar.Text</item> 

    </style> 

    <style name="HomeActionBar.Text" parent="TextAppearance.AppCompat"> 
     <item name="android:textColor">@color/actionBarTitleColor</item> 
     <item name="android:textSize">@dimen/action_bar_primary_action_font_size</item> 
    </style> 

    <style name="WhiteActionBar" parent="Theme.AppCompat.Light"> 
     <item name="android:actionBarStyle" tools:ignore="NewApi">@style/WhiteActionBar.Style</item> 
     <item name="android:actionMenuTextColor" tools:ignore="NewApi">@color/signature_action_bar_title_color</item> 
     <item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/back_icon</item> 

     <item name="actionBarStyle">@style/WhiteActionBar.Style</item> 
     <item name="actionMenuTextColor">@color/signature_action_bar_title_color</item> 
     <item name="homeAsUpIndicator">@drawable/back_icon</item> 

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

    </style> 

    <style name="WhiteActionBar.Style" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background" tools:ignore="NewApi">@color/white</item> 
     <item name="background">@color/white</item> 
     <item name="android:titleTextStyle" tools:ignore="NewApi">@style/WhiteActionBar.Style.Text</item> 
     <item name="titleTextStyle">@style/WhiteActionBar.Style.Text</item> 
    </style> 

    <style name="WhiteActionBar.Style.Text" parent="TextAppearance.AppCompat"> 
     <item name="android:textColor">@color/signature_clear_button_text_color</item> 
     <item name="android:textSize">@dimen/action_bar_primary_action_font_size</item> 
    </style> 

    <style name="BoldDivider"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/default_heading_color</item> 
    </style> 

    <style name="BoldDividerInline"> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/default_heading_color</item> 
    </style> 

    <style name="SemiBoldDivider"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">1dp</item> 
     <item name="android:background">@color/semibold_divider_color</item> 
    </style> 

</resources> 

我也曾嘗試解決建議here但它似乎並沒有工作。

任何幫助,非常感謝!

這裏是清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="com.arion.arionbookeeper" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="19" /> 

    <uses-permission 
     android:name="android.permission.INTERNET" 
     android:required="true" /> 
    <uses-permission 
     android:name="android.permission.ACCESS_NETWORK_STATE" 
     android:required="true" /> 
    <uses-permission 
     android:name="android.permission.RECORD_AUDIO" 
     android:required="true" /> 
    <uses-permission 
     android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE" 
     android:required="true" /> 
    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:required="true" /> 
    <uses-permission 
     android:name="android.permission.MODIFY_AUDIO_SETTINGS" 
     android:required="true" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 

    <uses-feature 
     android:name="android.hardware.camera" 
     android:required="true" /> 

    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission 
     android:name="android.permission.READ_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:name=".WallPApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/CustomActionBar" 
     tools:replace="android:theme" > 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <service 
      android:name=".eventListeners.BackgroundEventListenerService" 
      android:exported="false" 
      android:icon="@drawable/ic_launcher" /> 

     <activity 
      android:name=".GettingStarted" 
      android:label="@string/app_name" 
      android:noHistory="true" 
      android:screenOrientation="portrait" 
      android:theme="@style/NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

<!-- Rest of activites --> 
    </application> 

</manifest> 
+0

讓我看看你的Android Manifest文件。 –

+0

您在Android清單中使用錯誤的主題我想讓我知道 –

+0

@BhavdipPathar我已更新該帖子。你能說出有什麼不對嗎?謝謝 – gauravdott

回答

0

程序兼容性是現在它在主題窗口標誌期待更加嚴格,更加緊密地匹配,你會從框架中得到什麼。

因此,要解決您的問題,您有兩種選擇:

簡單的方法是隻使用Theme.AppCompat.NoActionBar爲你的父母的主題。這總是會做正確的事情。

如果你不能做到這一點,但(也許你需要支持操作欄也沒有任何動作吧),你應該做到以下幾點:

<style name="CustomActionBar" parent=" Theme.AppCompat.NoActionBar"> 
     <item name="android:actionBarStyle" tools:ignore="NewApi">@style/HomeActionBar</item> 
     <item name="android:actionMenuTextColor" tools:ignore="NewApi">@color/actionBarTitleColor</item> 
     <item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/up_icon</item> 

     <item name="actionBarStyle">@style/HomeActionBar</item> 
     <item name="actionMenuTextColor">@color/actionBarTitleColor</item> 
     <item name="homeAsUpIndicator">@drawable/up_icon</item> 

     <item name="windowActionModeOverlay">true</item> 
     <item name="colorPrimary">@color/bgBlue1</item> 
     <item name="colorPrimaryDark">@color/bgBlue1</item> 

     <!-- Both of these are needed --> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

我中有你CustomActionBar下添加這兩個屬性

<!-- Both of these are needed --> 
      <item name="windowActionBar">false</item> 
      <item name="windowNoTitle">true</item> 

...

讓更新使用本並進行測試。

+0

按照你的建議做,但我懷疑這會從其他活動中刪除操作欄。讓我們來看看。 – gauravdott

+0

Nope不起作用,與以前相同的錯誤。任何其他想法? – gauravdott

+0

您可以刪除此行「 false」 –

相關問題