当前位置: 首页 > 知识库问答 >
问题:

Activity、AppCompattivity、FragmentActivity和ActionBarActivity:何时使用Which?

洪楚
2023-03-14

我来自iOS,它很简单,您只需使用一个UIViewController。然而,在Android中,事情似乎要复杂得多,有特定API级别的特定UIComponent。我正在读BigNerdRanch for Android(这本书大约有2年的历史),他们建议我使用activity来托管我的fragmentactivity。但是,我认为activity是不推荐使用的。

那么对于API级别22(最低限度支持API级别15或16),我应该使用什么来承载组件,以及组件本身呢?所有这些都有用途吗?还是我应该只使用一两个?

共有1个答案

靳睿
2023-03-14

我以为活动被否决了

没有。

那么对于API级别22(最低限度支持API级别15或16),我应该使用什么来承载组件,以及组件本身呢?所有这些都有用途吗?还是我应该只使用一两个?

activity是基线。每个活动都直接或间接地从activity继承。

FragmentActivity用于在Support-V4Support-V13库中找到的片段的后端口。片段的本机实现是在API Level 11中添加的,它低于您建议的minSDKversion值。您需要特别考虑fragmentactivity的唯一原因是如果您希望使用嵌套片段(一个片段包含另一个片段),因为在API级别17之前,本机片段不支持这一点。

AppCompattivity来自AppCompat-v7库。主要是提供了操作条的后端口。由于本机操作栏是在API Level 11中添加的,因此不需要appcompattivity。但是,当前版本的AppCompat-V7还在操作栏和各种小部件方面增加了有限的材料设计美学后端口。使用appcompat-v7有优点也有缺点,远远超出了这个特定堆栈溢出答案的范围。

ActionBarActivityAppCompat-V7中的基活动的旧名称。由于种种原因,他们想改名。除非您正在使用的某些第三方库坚持使用ActionBaractivity,否则您应该首选AppCompattivity而不是ActionBaractivity

因此,假设您的minSDKversion在15-16范围内:

>

  • 如果您想要后置材质设计外观,请使用AppCompattivity

    如果不是,但需要嵌套片段,请使用fragmentactivity

    如果没有,请使用activity

    只需将来自注释添加为注释:AppCompattivity扩展了FragmentActivity,因此任何需要使用FragmentActivity功能的人都可以使用AppCompattivity

  •  类似资料:
    • 我正在尝试添加菜单在我的应用程序中,我发现,当它工作时,如果它扩展AppCompattivity,但不是如果它扩展Activity。是菜单中没有任何活动可用的东西吗?人们说Activity是基本的,而appcompatition是后来发展起来的东西,有什么好的理由我应该使用Activity而不是appcompatition吗?由于AppCompattivity是默认的,但在我的学习中,建议选择Ac

    • 在Android中,扩展Lifecycler活动、Activity、ActionBarActivity和AppCompactActivity之间的主要区别是什么?这些类在用法方面有何不同?

    • 问题内容: 我目前的构建数量至少为10,因此我必须使用该库来实现。我已经设置了,但是我现在要添加一个,但是这需要扩展我的类,Java没有多个。我该怎么办? 问题答案: ListActivity尚未移植到AppCompat。可能是因为您应该认为它“已弃用”,而改用ListFragment。 片段将与ActionBarActivity一起使用,只需确保它们是支持库中的片段即可。 要通过读这大约片段的链

    • 我对Android上的物理后退按钮有一个问题。我想允许使用“后退”按钮,但只能从活动#2中使用,这是一个片段,从那里开始,我只想允许“后退”按钮返回到上一个片段。 这是我的布局/工作流程: (#1)活动- 活动(从Intent x打开下一个活动=新Intent(params);)- 当FragmentActivity(#2)未禁用onBackPressed方法时,在FragmentActivity

    • 在我的一个活动中,我使用更改了工具栏的颜色。但在使用的5.0设备上,颜色是活动主题中的的颜色,所以我有两种非常不同的颜色,看起来不太好。 我意识到在5.0中可以使用,但没有这个功能。 所以我的问题是在5.0中,如何用更改状态栏颜色?

    • 问题内容: 我一直在nodejs中编程,研究了如何同时使用socket.io和对节点服务器的ajax调用。socket.io是否设计为替代ajax?我很好奇,在哪种情况下使用socket.io更好,而哪种ajax更好。感谢您的输入。 问题答案: 好吧,Web套接字(通过socket.io)提供的主要内容之一就是ajax缺乏的是服务器推送。因此,对于ajax,如果您想了解服务器上的新事件(例如,另一