猿问
下载APP

Activity,AppCompatActivity,FragmentActivity和Action

Activity,AppCompatActivity,FragmentActivity和ActionBarActivity:何时使用哪个?

我来自iOS,这很容易,你只需使用UIViewController。然而,在Android中,事情看起来要复杂得多,某些UIComponents用于特定的API级别。我正在阅读BigNerdRanch for Android(这本书大约有2年历史),他们建议我Activity用来托管我的FragmentActivities。但是,我认为Activity已被弃用。

因此,对于API级别22(对API级别15或16的最低支持),我应该使用什么来托管组件以及组件本身?是否有所有这些用途,或者我应该几乎完全使用一两个?


慕哥9229398
浏览 49回答 3
3回答

达令说

我认为Activity已被弃用没有。因此,对于API级别22(对API级别15或16的最低支持),我应该使用什么来托管组件以及组件本身?是否有所有这些用途,或者我应该几乎完全使用一两个?Activity是基线。每个活动都Activity直接或间接地继承。FragmentActivity用于在库support-v4和support-v13库中找到的片段的后端口。API级别11中添加了片段的本机实现,该级别低于您的建议minSdkVersion值。您需要FragmentActivity特别考虑的唯一原因是您是否要使用嵌套片段(包含另一个片段的片段),因为在API级别17之前,本机片段不支持这种片段。AppCompatActivity来自appcompat-v7图书馆。原则上,这提供了动作栏的后端。由于在API级别11中添加了本机操作栏,因此您不需要这样做AppCompatActivity。但是,appcompat-v7就动作栏和各种小部件而言,当前版本还增加了Material Design美学的有限后退。使用的优点和缺点appcompat-v7,远远超出了此特定Stack Overflow答案的范围。ActionBarActivity是来自的基本活动的旧名称appcompat-v7。由于各种原因,他们想要更改名称。除非你使用一些第三方库坚持在一个ActionBarActivity,你应该更喜欢AppCompatActivity了ActionBarActivity。所以,鉴于你minSdkVersion在15-16范围内:如果您想要向后移植的Material Design外观,请使用 AppCompatActivity如果没有,但您想要嵌套片段,请使用 FragmentActivity如果没有,请使用 Activity只需添加评论作为注释:AppCompatActivity扩展FragmentActivity,所以任何需要使用功能的人FragmentActivity都可以使用AppCompatActivity。

米脂

AppCompatActivity扩展FragmentActivity扩展BaseFragmentActivityApi16扩展BaseFragmentActivityApi14扩展SupportActivity扩展Activity所以Activity比所有人都快,AppCompatActivity是最好的。

至尊宝的传说

如果您谈谈Activity,AppcompactActivity,ActionBarActivity等等等等。我们需要讨论他们正在扩展的基类,首先我们必须了解超类的层次结构。所有事情都是从Context开始的,Context是所有这些类的超类。Context是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及对应用程序级操作的上调,例如启动活动,广播和接收意图等Context 之后是或延长 ContextWrapper该ContextWrapper是扩展类的上下文类,仅代表其所有调用另一个上下文的。可以子类化以修改行为而无需更改原始上下文。现在我们到达 Activity该活动是一个延伸的类ContextThemeWrapper这是一个单一的,集中的一点是,用户可以做。几乎所有活动都与用户交互,因此Activity类负责为您创建一个窗口下面的类仅限于扩展,但它们在内部通过它们的下行程序进行扩展,并为特定的Api提供支持所述SupportActivity是一类,其延伸的活动,是用于构成一起兼容性功能的基类所述BaseFragmentActivityApi14是一类,其延伸SupportActivity 即一个基类它被限制类,但它是由延伸 BaseFragmentActivityApi16支持的功能V14所述 BaseFragmentActivityApi16是其延伸的一类 BaseFragmentActivityApi14即对于{@code基类 FragmentActivity },以便能够使用V16的API。但它也是受限制的类,但它由FragmentActivity扩展以支持V16的功能。现在FragmentActivty该FragmentActivity是延伸的一类 BaseFragmentActivityApi16并希望使用基于支持片段和装载机的API。使用此类而不是新平台的内置片段和加载器支持时,必须分别使用getSupportFragmentManager()和getSupportLoaderManager()方法来访问这些功能。ActionBarActivity是支持库的一部分。支持库用于在旧平台上提供更新的功能。例如,ActionBar是在API 11中引入的,默认情况下是Activity的一部分(实际上取决于主题)。相比之下,旧平台上没有ActionBar。因此,支持库添加了一个子类Activity(ActionBarActivity),它提供了ActionBar的功能和ui2015年,在支持库的修订版22.1.0中不推荐使用ActionBarActivity。应该使用AppCompatActivity。该AppcompactActivity是延伸的一类 FragmentActivity是对于使用支持库操作栏功能活动的基类。通过为活动扩展此类并将活动主题设置为类似主题,您可以在API级别7或更高级别上运行时为活动添加ActionBarTheme.AppCompat
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答