ActionBarActivity为何被弃用?

122

我刚安装了 Android Studio 并开始编写一个继承自 ActionBarActivity 的活动,但它显示该类已过时。那么,我该如何为我的活动设置 Action Bar?
另外,在入门培训中,虽然使用了 ActionBarActivity,但没有提到它已经被弃用。


https://dev59.com/010a5IYBdhLWcg3w68Yz - Bojan Kseneman
16
从appcompat-v7-r21.1.0开始,逻辑有所改变,此外 ActionBarActivity 现在是 AppCompatActivity。 从您的角度来看,这两者没有区别。 - Eugen Pechanec
1
ActionBarActivity自支持库26.0.0-beta2版本起已被移除。详情请参考https://developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/alldiffs_index_removals.html。 - ישו אוהב אותך
3个回答

121

自从Toolbar被引入后,ActionBar已经过时。可以将Toolbar视为任何操作栏的“超集”。因此,“旧”的ActionBar现在是Toolbar的一个示例。如果您想要类似的功能,但又不想收到弃用警告,请执行以下操作:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    toolbar.setTitle(R.string.app_name);
    setSupportActionBar(toolbar);
}

您需要在布局XML中定义工具栏

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

有了这个新功能,您可以创建自己的定制 ActionBar 并让 Android 来处理繁重的工作。只需创建一个继承自 Toolbar 的自定义视图即可。


此外,您应该使用 AppCompatActivity 而不是 ActionBarActivity,它在最新版本的 appcompat 库中引入。因此,请不要忘记更新 gradle。

compile 'com.android.support:appcompat-v7:22.1.1'

9
只需将 extends ActionBarActivity 替换为 extends AppCompatActivity 就行了吗? - Ehtesh Choudhury
9
内部有相当多的变化,但界面是相同的。所以,只需更改活动类型就可以了,非常简单。 - Endran
62
很遗憾,Android Studio向导仍然扩展ActionBarActivity,然后告诉你它已经过时了。他们在谷歌内部根本不沟通吗? - Boy
不是完美的解决方案。你给出的答案适用于ActionBar而不是ActionBarActivity。我会选择@DroidMind的解决方案。 - Shabbir Dhangot
太好了,又有更多的工作了。与他们鼓励每个人使用片段的设计相同。Google的设计原则非常适合那些有10个人在同一个应用程序上工作的公司。 - Muz

71

8

这个答案提供了一种简单的方法来消除错误消息。

当我们将父活动类 ActionBarActivity 更改为 AppCompatActivity 时,错误消息将消失。

您可以点击此处获取更多信息。


1
这对其他人来说是否看起来像广告? - Noah Herron

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