我来自于iOS,它很简单,您只需使用UIViewController。但是,在Android中,事情似乎要复杂得多,对于特定的API级别,使用某些UIComponent。我正在阅读适用于Android的BigNerdRanch(这本书大约有2年历史了),他们建议我使用Activity托管我的FragmentActivities。但是,我认为Activity已过时。

因此,对于API级别22(对API级别15或16的最低支持),我到底应该使用什么来托管组件以及组件本身?所有这些都有用途吗,还是我应该只使用一两个?

最佳答案



不。


Activity是基线。每个 Activity 都直接或间接地从Activity继承。
FragmentActivitysupport-v4support-v13库中找到的片段的反向端口一起使用。片段的 native 实现是在API级别11中添加的,该级别低于建议的minSdkVersion值。您需要特别考虑使用FragmentActivity的唯一原因是,如果您要使用嵌套片段(包含另一个片段的片段),因为 native 片段直到API级别17才支持。
AppCompatActivity来自appcompat-v7库。原则上,这提供了操作栏的反向移植。由于 native 操作栏是在API级别11中添加的,因此您不需要AppCompatActivity。但是,就 Action 栏和各种小部件而言,当前版本的appcompat-v7也增加了有限的Material Design美学反向移植。使用appcompat-v7的优缺点,远远超出了此特定Stack Overflow答案的范围。
ActionBarActivityappcompat-v7中基础 Activity 的旧名称。由于各种原因,他们想更改名称。除非您使用的某些第三方库坚持使用ActionBarActivity,否则您应首选AppCompatActivity而不是ActionBarActivity

因此,鉴于您的minSdkVersion在15-16范围内:

  • 如果要向后移植 Material 设计外观,请使用AppCompatActivity
  • 如果不是,但是要嵌套片段,请使用FragmentActivity
  • 如果不是,请使用Activity

  • 只是在注释中添加注释:AppCompatActivity扩展了FragmentActivity,因此任何需要使用FragmentActivity功能的人都可以使用AppCompatActivity

    10-08 19:54