164

android.support.v7.app.AppCompatActivity昨天作为新功能添加到最新的 v7 支持库中。

据说它ActionBarActivity已被弃用,取而代之的是新的AppCompatActivityAppCompatActivity即使用支持库操作栏功能的活动的基类。那么,AppCompatActivityover有哪些新功能ActionBarActivity呢?AppCompatActivity有哪些增强功能ActionBarActivity?以及有什么优点AppCompatActivity?有人可以提供一些样品吗?

PS:最让我吃惊的是,AppCompatActivity继承自android.support.v4.app.FragmentActivity的是 ! 的直接父类ActionBarActivity。我的意思是实际上现在ActionBarActivity可以做任何AppCompatActivity可以做的事情,为什么Android推出了后者?

同时,我看到一篇博文说:“不是从ActionBarActivityto重命名AppCompatActivity,内部逻辑AppCompat是通过AppCompatDelegate”,那么“内部逻辑”是AppCompat什么?能做AppCompatDelegate什么?有人可以发布一些关于此的代码吗?

4

6 回答 6

146

正如 Chris 所写,新的已弃用版本ActionBarActivity(一个扩展AppCompatActivity类)是一种可以安全使用的向后兼容类。它的弃用只是提示您要求AppCompatActivity直接使用 new 代替。AppCompatActivity是一个新的、更通用的实现,它在AppCompatDelegate内部使用类。

如果您开始新的开发,那么您应该立即使用新AppCompatActivity类。如果您有机会更新您的应用程序,那么也将 deprecated 替换ActionBarActivity为新活动。否则,您可以继续使用已弃用的活动,并且行为根本不会有任何差异。

关于AppCompatDelegate,它允许您在活动中拥有新的着色小部件,既不是AppCompatActivity也不是ActionBarActivity

例如,您从外部库继承了一个活动,而该库又不继承自,AppCompatActivity但您希望此活动具有着色材质小部件(视图)。为了实现这一点,您需要AppCompatDelegate在您的活动中创建一个实例,覆盖该活动的方法,例如addContentView()setContentView()(有关方法的完整列表,请参见AppCompatDelegatejavadoc),并且在这些被覆盖的方法中,将调用转发到内部AppCompatDelegate实例。AppCompatDelegate将完成其余的工作,您的“老式”活动将“物化”。

于 2015-04-30T22:19:02.270 回答
35

这主要是一个名称更改:ActionBarActivity并没有真正描述它现在所做的一切。ActionBarActivity如果您愿意,您可以安全地使用。把它想象成一个符号链接。

于 2015-04-22T13:30:06.730 回答
12

AppCompat 支持库从不起眼但重要的开始:为所有 API 7 和更高版本的设备提供一个一致的操作栏。在修订版 21 中,它承担了新的责任:为所有 API 7+ 设备带来材料调色板、小部件着色、工具栏支持等。有了这个,ActionBarActivity 这个名字并没有真正涵盖它真正所做的全部范围

http://android-developers.blogspot.it/2015/04/android-support-library-221.html

于 2015-07-31T11:31:23.107 回答
9

AppCompatActivity自android support appcompat library发布以来被引入Android-SDK

AppCompatActivityFragmentActivitysupport v4 的直接子类和ActionBarActivity.

AppCompatActivity是使用支持库操作栏功能的活动的基类。

在API 级别 7 或更高级别ActionBar上运行时,您可以通过为您的活动扩展此类并将活动主题设置为Theme.AppCompat或类似主题来向活动添加一个。

至于支持 v7 appcompat 库,它增加了对Action Bar用户界面设计模式的支持。该库包括对材料设计用户界面实现的支持。

以下是 v7 appcompat 库中包含的一些关键类:

  • ActionBar- 提供操作栏用户界面模式的实现。
  • AppCompatActivity- 添加一个应用程序活动类,该类可用作使用支持库操作栏实现的活动的基类。
  • AppCompatDialog- 添加可用作AppCompat主题对话框的基类的对话框类。
  • ShareActionProvider- 添加对可包含在操作栏中的标准化共享操作(例如电子邮件或发布到社交应用程序)的支持。

下载Android 支持库后,此库位于/extras/android/support/v7/appcompat/目录中。

于 2015-06-04T02:57:34.683 回答
7

以前唯一的入口点AppCompat是通过现在已弃用的ActionBarActivity类。不幸的是,这迫使您使用一套 Activity 层次结构,这使得使用PreferenceActivity变得不可能。

有关更多信息,请参阅 chris banes 的 support-libraries-v22-1-0

于 2015-04-22T12:13:40.360 回答
2

最新版本的 android 支持库 22.1 弃用了ActionBarActivity支持,它承诺为从 API 级别 7 及更高版本开始的所有设备AppCompatActivity带来单一一致ActionBar

于 2015-04-25T10:38:50.230 回答