getActionBar() возвращает ноль после обновления SDK до 5.0
После того, как я обновил Android SDK до версии 5.0, метод getActionBar() начал возвращать ноль, вызывая сбой моего приложения при запуске. Я не понимаю, что является причиной этого, и любые существующие потоки Stackru не помогли.
Вот мой манифест:
<application
android:name="App"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/ActionBarTheme" >
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme"></style>
<style name="ListItemPadding">
<item name="android:paddingTop">8dp</item>
<item name="android:paddingRight">5dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="android:paddingLeft">5dp</item>
</style>
themes.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- the theme applied to the application or activity -->
<style name="ActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/ActionBar</item>
<item name="android:actionOverflowButtonStyle">@style/OverflowButton</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ActionBar</item>
<item name="actionOverflowButtonStyle">@style/OverflowButton</item>
</style>
<style name="OverflowButton" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/menu</item>
</style>
<!-- ActionBar styles -->
<style name="ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/main</item>
<!-- Support library compatibility -->
<item name="background">@color/main</item>
</style>
</resources>
и мои зависимости от gradle:
dependencies {
compile 'com.github.jenzz.undobar:library:1.1:api8Release@aar'
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.loopj.android:android-async-http:1.4.5'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
compile 'com.google.android.gms:play-services:6.1.+'
}
Любая помощь очень ценится!
2 ответа
Решение
Использование getSupportActionBar()
когда вы используете ActionBarActivity
а также appcompat-v7
, как вы, кажется, делаете здесь.
Я только что столкнулся с этим сам. Неиспользование AppCompat не всегда может быть решением, особенно если вы собираетесь его использовать. Поэтому, если вы используете AppCompatActivity, попробуйте вставить это в файл layout.xml:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentTop="true"
android:background="?attr/colorPrimary"/>
Затем вы можете использовать getSupportActionBar().