从AppCompatActivity更新为Activity后,getActionBar()返回null

时间:2017-02-21 05:11:03

标签: android android-actionbar

我从支持Gingerbread切换,因为Play不再支持它。我现在可以停止使用支持类,并转向实际的支持类。除了getActionBar为null

  • Android marshmallow
  • 我的主题包括ActionBar(@Style.AppTheme
  • 延长Activity,而不是ActionBarActivityAppCompatActivity
  • requestWindowFeature(Window.FEATURE_ACTION_BAR);之前,甚至在setContentView
  • 之前尝试super.onCreate
  • getActionBar
  • 之后在onCreate中呼叫setContentView

styles.xml

<resources>

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

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>

    <style name="mp_name">
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">20sp</item>
    </style>
    <style name="search_date">
        <item name="android:textStyle">italic</item>
        <item name="android:textSize">14sp</item>
    </style>
    <style name="search_details">
        <item name="android:textStyle">normal</item>
        <item name="android:textSize">10sp</item>
    </style>
</resources>

styles.xml(v11)

<resources>

    <!--
        Base application theme for API 11+. This theme completely replaces
        AppBaseTheme from res/values/styles.xml on API 11+ devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!-- API 11 theme customizations can go here. -->
    </style>

</resources>

styles.xml(v14)

<resources>

    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
    </style>

</resources>

styles.xml(v21)

<resources>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
</resources>

3 个答案:

答案 0 :(得分:1)

你试过getSupportActionBar()吗?当我遇到类似问题时,这对我有用。

您可能还想查看此主题的其中一个答案: getActionBar returns null

答案 1 :(得分:0)

原因是<item name="windowActionBar">false</item>。删除它并尝试。 无需使用Theme.AppCompat,因为您没有继承AppCompatActivity

答案 2 :(得分:-1)

  1. 如果您已为活动添加主题(如果已添加然后将其删除),请检查您的清单。
  2. 检查您是否在应用程序中添加了正确的主题

    android:icon="@drawable/app_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".activity.SplashScreen"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>