android.support.v7.app.AppCompatActivity
作为新功能添加到最新的v7支持库中。
据说ActionBarActivity
已被弃用,有利于新AppCompatActivity
,而AppCompatActivity
是使用支持库操作栏功能的活动的基类。那么AppCompatActivity
超过ActionBarActivity
的新功能是什么? AppCompatActivity
对ActionBarActivity
有哪些改进? AppCompatActivity
有什么好处?有人可以提供一些样品吗?
任何提示都表示赞赏。并提前感谢。
PS:最让我感到惊讶的是,从AppCompatActivity
扩展的android.support.v4.app.FragmentActivity
是ActionBarActivity
的直接父类!我的意思是现在ActionBarActivity
可以执行AppCompatActivity
可以做的任何事情,为什么Android会推出后者?
与此同时,我看到一篇博客文章指出:“不是从ActionBarActivity
重命名为AppCompatActivity
,AppCompat
的内部逻辑可以通过{{1}获得} “,那么AppCompatDelegate
的”内部逻辑“是什么? AppCompat
可以做什么?有人可以发布一些关于此的代码吗?
答案 0 :(得分:143)
正如Chris写的那样,ActionBarActivity
(扩展AppCompatActivity
类)的新弃用版本可以安全地使用向后兼容性类。它的弃用仅仅是您要求直接使用新AppCompatActivity
的提示。 AppCompatActivity
是一个新的,更通用的实现,它在内部使用AppCompatDelegate
类。
如果您开始新的开发,那么您应该立即使用新的AppCompatActivity
课程。如果您有机会更新自己的应用,请将新推荐的ActionBarActivity
替换为新活动。否则,您可以继续使用已弃用的活动,并且行为根本没有差异。
关于AppCompatDelegate
,它允许您在活动中使用新的有色小部件,既不是AppCompatActivity
也不是ActionBarActivity
。
例如,您从外部库继承了一个活动,而该活动依次从<{1}}继承而不是,但您希望此活动具有着色的材质小部件(视图)。要实现这一目标,您需要在活动中创建AppCompatActivity
的实例,覆盖该活动的方法,例如AppCompatDelegate
,addContentView()
等。(请参阅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)
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
和上述