2015-03-17 5 views
0

Я пытаюсь изменить цвет своего Android ActionBar, но мое приложение закрывается с ошибкой каждый раз. Я пробовал все другие предложения и исправления в других сообщениях, но они, похоже, не работают для меня. Также - minSdkVersion 19Как изменить цвет панели действий Android?

Ошибка:

03-17 11:25:56.884 11999-11999/ca.holdfastonline.menu_test_02 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: ca.holdfastonline.menu_test_02, PID: 11999 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.holdfastonline.menu_test_02/ca.holdfastonline.menu_test_02.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) 

Мой styles.xml

<resources> 
    <style name="QueryTheme" parent="@style/Theme.AppCompat"> 
     <!-- Any customizations for your app running on devices with Theme.Holo here --> 
    </style> 
    <!-- the theme applied to the application or activity --> 
    <style name="CustomActionBarTheme" 
     parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <!-- ActionBar styles --> 
    <style name="MyActionBar" 
     parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">#2980b9</item> 
    </style> 
</resources> 

Моего AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="ca.holdfastonline.menu_test_02" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/QueryTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/CustomActionBarTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

</manifest> 

Спасибо.

+0

Какой у вас минимальный SDK? –

+0

@TristanWiley My minSdkVersion 19 – Holdfast33

ответ

1
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

У вас есть только одно мероприятие. Используется @style/CustomActionBarTheme. Ваше определение CustomActionBarTheme имеет унаследованное от Theme.Holo.Light.DarkActionBar. Это не тема AppCompat. Изменить Theme.Holo.Light.DarkActionBar на Theme.AppCompat.Light.DarkActionBar.

+0

И когда @CommonsWare отвечает, вы знаете, что ваш ответ будет всегда бесполезным ответом –

+0

Я изменил то, что вы упомянули, и приложение работает, но без какого-либо пользовательского цвета? – Holdfast33

+0

@ Holdfast33: Это потому, что вы ничего не изменили в этой теме. У вас такие же результаты, как если бы вы использовали 'Theme.AppCompat.Light.DarkActionBar' напрямую. Ответ, который удалил @Fondesa, показал вам, как добавить 'colorPrimary' в эту тему, чтобы установить основной цвет, который будет использоваться' appcompat-v7', чтобы подкрасить вашу панель действий. См. [Этот каталог] (https://github.com/commonsguy/cw-omnibus/tree/master/AppCompat) для кучи образцов с использованием 'appcompat-v7', в частности' ActionBarColor' для настройки оттенков , – CommonsWare

1

Возможно, это связано с тем, что в вашем файле Java вы используете ActionBarActivity, и вы должны использовать Activity.

Подробнее В основном вы используете ActionBarActivity, эта деятельность требует Theme.AppCompact, который где ваша ошибка происходит из. Чтобы исправить это, вам нужно будет изменить обычную активность или просто использовать Theme.AppCompact

+0

Да в моем java-файле у меня есть «ActionBarActivity». Должны ли все экземпляры «ActionBarActivity» быть изменены только на «Активность»? Можете ли вы расширить свой ответ? – Holdfast33

+0

В основном вы используете ActionBarActivity, для этого действия требуется Theme.AppCompact, откуда исходит ваша ошибка. Чтобы исправить это, вам нужно будет изменить обычный вид деятельности или просто использовать Theme.AppCompact –

Смежные вопросы