【问题标题】:getActionBar() returns null after SDK update to 5.0SDK 更新到 5.0 后 getActionBar() 返回 null
【发布时间】:2014-10-23 10:55:44
【问题描述】:

在我将 Android SDK 更新到 5.0 版后,getActionBar() 方法开始返回 null,导致我的应用在启动时崩溃。我不知道是什么原因造成的,任何现有的 Stackoverflow 线程都没有帮助。

这是我的清单:

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

主题.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.+'
}

非常感谢任何帮助!

【问题讨论】:

  • getActionBar() 什么级别的?源自ActionBarActivity?那么你使用了错误的方法(你应该使用getSupportActionBar()
  • @Selvin 这是我自己的类扩展了一个活动。这是使活动崩溃的行:getActionBar().setDisplayHomeAsUpEnabled(false),当我删除此行时,应用程序启动但没有操作栏。
  • 你用 com.android.support:appcompat-v7:21.0.0' 做什么?
  • @pskink 从项目开始就一直存在。我不确定我是否将它用于任何事情。
  • SOF:请不要贬低新用户!

标签: android null android-actionbar android-studio


【解决方案1】:

当您使用ActionBarActivityappcompat-v7 时使用getSupportActionBar(),就像您在这里所做的那样。

【讨论】:

  • 虽然不使用ActionBarActivity。这是一个简单的Activity,在我更新到最新的 SDK 之前它工作得很好。
  • @maxh:然后摆脱 appcompat-v7 并切换到股票 Android 主题并远离 Theme.AppCompat
  • 谢谢!这解决了问题。奇怪的是它以前工作过。但现在删除 appcompat 库后,它又可以工作了。
【解决方案2】:

我自己也遇到过这个。不使用 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()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多