与ActionBarActivity相比,AppCompatActivity的增强是什么?

Sil*_*ght 164 android android-appcompat android-actionbaractivity appcompatactivity

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

据说ActionBarActivity已经弃用了新的AppCompatActivity,这AppCompatActivity是使用支持库操作栏功能的活动的基类.那么,什么是新的功能AppCompatActivityActionBarActivity?做什么改进AppCompatActivity有过ActionBarActivity?有什么好处AppCompatActivity?有人可以提供一些样品吗?

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

PS:最让我感到惊讶的是,AppCompatActivityandroid.support.v4.app.FragmentActivity直接的父类延伸出来的是什么ActionBarActivity!我的意思是现在实际上ActionBarActivity可以做任何AppCompatActivity可以做的事情,为什么Android会推出后者呢?

同时,我看到了一篇博客文章,指出:" 这不是从命名ActionBarActivityAppCompatActivity,内部逻辑AppCompat通过可用AppCompatDelegate ",那么什么是" 内在逻辑的" AppCompat?有什么可以AppCompatDelegate做什么?有人会发布一些关于此的代码吗?

ser*_*nka 145

正如克里斯所写,新的弃用版本ActionBarActivity(一个扩展AppCompatActivity类)可以安全地使用向后兼容类.它的弃用只是暗示你要求AppCompatActivity直接使用new .AppCompatActivity是一个新的,更通用的实现,它在AppCompatDelegate内部使用类.

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

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

例如,您从外部库继承一个活动,而该外部库不会继承,AppCompatActivity但您希望此活动具有着色的材质小部件(视图).要实现它,您需要AppCompatDelegate在活动内部创建一个实例,覆盖该活动的方法addContentView(),setContentView()等等(请参阅AppCompatDelegatejavadoc获取完整的方法列表),并在这些重写方法内部将调用转发给内部AppCompatDelegate实例.AppCompatDelegate将做其余的事情,你的"旧时尚"活动将"物化".

  • 您可以告诉我,当我使用Activity代替Appcompactivity时会发生什么?我已经搜索但没有得到解决方案.请帮帮我 (2认同)

Chr*_*nes 35

它主要是一个名称变化:ActionBarActivity并没有真正描述它现在所做的一切.ActionBarActivity如果您愿意,可以放心使用.把它想象成一个符号链接.

  • @SilentKnight:克里斯写道,这主要是改名.引用[Android开发者博客](http://android-developers.blogspot.com/2015/04/android-support-library-221.html):"AppCompat支持库始于简单但重要的开端:单一适用于所有API 7及更高版本设备的一致操作栏.在版本21中,它承担了新的责任:为所有API 7+设备提供材料调色板,窗口小部件着色,工具栏支持等.这样,ActionBarActivity这个名称就没有了真的涵盖了它真正做到的全部范围." (4认同)
  • 使用已弃用的类是不安全的**,因为在将来的版本中它们将被删除.虽然从支持库中删除所有对"ActionBarActivity"的引用都很容易(例如在更新应用程序时),但我建议从现在开始避免使用它. (3认同)

And*_*cko 12

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

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


Sil*_*ght 9

AppCompatActivityAndroid支持appcompat库发布以来,Android-SDK被引入.

AppCompatActivityFragmentActivity支持v4 的直接子类和直接父类ActionBarActivity.

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

通过为活动扩展此类并将活动主题设置为Theme.AppCompat或类似主题,您可以ActionBarAPI级别7或更高级别上运行时为活动添加活动.

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

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

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

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


nul*_*ter 7

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

有关详细信息,请参阅chris banessupport-libraries-v22-1-0