材料设计中缺少ActionBar

8

我希望使用AndroidStudio和新的Material Design开发一个Android应用程序,在Android 5.0上看起来很棒,但是当我在我的4.4.2手机上测试应用程序时,应用程序的ActionBar消失了。

这是我的清单文件:

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

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

<!-- Base application theme. -->
<style name="MyTheme" parent="Theme.AppCompat.Light">
</style>

和 build.gradle 文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:+'
}

你知道错误出在哪里吗?

谢谢! Simon


你是否继承自ActionBarActivity - CommonsWare
1个回答

13
要使用appcompat-v7操作栏后备,您需要让您的活动继承ActionBarActivity
引用Chris Banes的博客文章:
如果您当前未使用AppCompat,或者您正在从头开始,则应如何设置:
  • 所有活动都必须扩展自ActionBarActivity。它扩展了v4支持库中的FragmentActivity,因此您可以继续使用片段。
  • 所有主题(希望有操作栏/工具栏的主题)都必须继承自Theme.AppCompat。有可用的变体,包括Light和NoActionBar。
  • 在填充任何要显示在操作栏上的内容(例如用于在操作栏中进行列表导航的SpinnerAdapter)时,请确保使用通过getSupportActionBar().getThemedContext()检索的操作栏的themed context。
  • 对于菜单项上的任何与操作相关的调用,必须使用MenuItemCompat中的静态方法。
更新: 请注意,Google正在迁移到 AppCompatActivity ActionBarActivity 可以正常工作——它只是 AppCompatActivity 的无操作子类——但是如果要使用 appcompat-v7 行动栏后备,则最好直接扩展 AppCompatActivity

但是我为什么需要继承自“ActionBarActivity”?我以前甚至不知道这个类。 - user4155013
@Simon:自从去年8月份推出以来,ActionBarActivity已经成为使用appcompat-v7的必要条件。然而,这仅适用于您想要使用appcompat-v7的情况,无论是因为您想在旧设备上支持操作栏(回到API Level 7),还是因为您想采用一些在今天发布的appcompat-v7更新中添加的Material Design支持。如果您愿意,可以跳过该库,使用常规主题并使用本机操作栏。然后,您可以继承任何活动类。 - CommonsWare
好的,我想在旧设备上使用Material Design,所以我需要ActionBarActivity...谢谢。 - user4155013
1
@Simon,如果您对此答案满意,请不要忘记接受它。 - J.G.Sebring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接