【问题标题】:ActionBar is missing after switching to API21 AppCompat切换到 API21 AppCompat 后缺少 ActionBar
【发布时间】:2016-11-23 21:53:13
【问题描述】:

在处理 Big Nerd Ranch 的犯罪意图项目时,当我将 AppCompat 库从 API 19 更新到 API 21 时,我丢失了 ActionBar。我已尝试更改主题,但找不到获取 ActionBar 的方法。

完整的源代码可在here获取。

AndroidManifest.xml

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name=".CrimeListActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CrimePagerActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

style.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>

谢谢。

【问题讨论】:

    标签: android android-actionbar android-appcompat


    【解决方案1】:

    要使用appcompat-v7,您必须继承自ActionBarActivityCrimeListActivity 继承自 SingleFragmentActivity,后者又继承自 FragmentActivity,而不是 ActionBarActivity

    【讨论】:

    • 感谢您的解释。我在这里有点迷路了。如果我将SingleFragmentActivityCrimePagerActivity 中的FragmentActivity 更改为ActionBarActivity,我会得到ActionBar。我不确定这会如何破坏应用程序。
    • @donniezazen:我怀疑它会破坏任何东西,因为ActionBarActivity 本身继承自FragmentActivity。如果您尝试使用来自 Java 的操作栏,请确保您调用 getSupportActionBar(),而不是 getActionBar()。另外,请记住,使用 20 多个月前的书籍将是一个问题,因为 Android 是一个瞬息万变的平台。那本书早于appcompat-v7、Android Studio 等。
    • 谢谢。我确实面临使用旧书的问题。我已经完成了一半。我也可以通过它。我计划接下来阅读您强烈推荐的书。
    【解决方案2】:

    我也有这个问题,我移动了整条线 (android:theme="@style/AppTheme) 及其作品!主题是一个看起来更好的黑暗主题。

    【讨论】:

      【解决方案3】:

      我也遇到过这个问题。

      解决方案是从manifest.xml (android:theme="@style/AppTheme") 中删除样式标签。

      它将使用全息主题,但使用操作栏。

      【讨论】:

      • 这个主题是P.I.A.
      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多