AppCompatActivity相对于ActionBarActivity的增强是什么?

时间:2015-04-22 12:10:54

标签: android android-appcompat android-actionbaractivity appcompatactivity

昨天,

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

据说ActionBarActivity已被弃用,有利于新AppCompatActivity,而AppCompatActivity是使用支持库操作栏功能的活动的基类。那么AppCompatActivity超过ActionBarActivity的新功能是什么? AppCompatActivityActionBarActivity有哪些改进? AppCompatActivity有什么好处?有人可以提供一些样品吗?

任何提示都表示赞赏。并提前感谢。

PS:最让我感到惊讶的是,从AppCompatActivity扩展的android.support.v4.app.FragmentActivityActionBarActivity的直接父类!我的意思是现在ActionBarActivity可以执行AppCompatActivity可以做的任何事情,为什么Android会推出后者?

与此同时,我看到一篇博客文章指出:“不是从ActionBarActivity重命名为AppCompatActivityAppCompat的内部逻辑可以通过{{1}获得} “,那么AppCompatDelegate的”内部逻辑“是什么? AppCompat可以做什么?有人可以发布一些关于此的代码吗?

6 个答案:

答案 0 :(得分:143)

正如Chris写的那样,ActionBarActivity(扩展AppCompatActivity类)的新弃用版本可以安全地使用向后兼容性类。它的弃用仅仅是您要求直接使用新AppCompatActivity的提示。 AppCompatActivity是一个新的,更通用的实现,它在内部使用AppCompatDelegate类。

如果您开始新的开发,那么您应该立即使用新的AppCompatActivity课程。如果您有机会更新自己的应用,请将新推荐的ActionBarActivity替换为新活动。否则,您可以继续使用已弃用的活动,并且行为根本没有差异。

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

例如,您从外部库继承了一个活动,而该活动依次从<{1}}继承而不是,但您希望此活动具有着色的材质小部件(视图)。要实现这一目标,您需要在活动中创建AppCompatActivity的实例,覆盖该活动的方法,例如AppCompatDelegateaddContentView()等。(请参阅setContentView() javadoc方法列表),并在这些重写方法内部转发对内部AppCompatDelegate实例的调用。 AppCompatDelegate将完成其余工作,您的“旧时尚”活动将“物化”。

答案 1 :(得分:35)

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

答案 2 :(得分:12)

  

AppCompat支持库从简单而重要的开端开始:针对所有API 7及更高版本设备的单一一致操作栏。在修订版21中,承担了新的责任:为所有API 7+设备提供材料调色板,窗口小部件着色,工具栏支持等。有了这个,名称ActionBarActivity并没有真正覆盖它真正做到的全部范围

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

答案 3 :(得分:9)

android支持appcompat库发布以来,

AppCompatActivity被引入 Android-SDK

AppCompatActivity是支持v4 FragmentActivity的直接子类,ActionBarActivity的直接父类。

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

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

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

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

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

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

答案 4 :(得分:7)

以前,AppCompat的唯一入口点是通过现已弃用的ActionBarActivity类。不幸的是,这迫使你使用一个设置的Activity层次结构,这使得使用PreferenceActivity这样的事情变得不可能。

请参阅chris banes的support-libraries-v22-1-0了解更多信息

答案 5 :(得分:2)

最新版本的Android支持库22.1弃用了ActionBarActivity,转而使用AppCompatActivity,它承诺为所有以API Level 7开头的设备带来一致ActionBar和上述