所以,对于API级别22(最低支持API级别15或16),我应该使用什么来托管这些组件?组件本身又该用什么呢?所有这些都有用途,还是应该只使用一两个?
所以,对于API级别22(最低支持API级别15或16),我应该使用什么来托管这些组件?组件本身又该用什么呢?所有这些都有用途,还是应该只使用一两个?
Activity
作为基线。support-v4
和support-v13
库中的回退片段,同时使用FragmentActivity
来支持嵌套片段。appcompat-v7
库中的AppCompatActivity
。ActionBarActivity
,除非某个第三方库必须使用它。AppCompatActivity
。如果不需要,但是需要嵌套片段,请使用FragmentActivity
。如果都不需要,请使用Activity
。请注意AppCompatActivity
扩展了FragmentActivity
,因此需要使用FragmentActivity
功能的人可以使用AppCompatActivity
。FragmentActivity
是 AppCompatActivity
的祖先类。虽然我不建议使用嵌套片段,但只要嵌套片段起作用,AppCompatActivity
就支持嵌套片段。 - CommonsWareActivity
获取大部分最新的内容而不需要support-v7
,即非后向移植的Material Design。我的目标是min 19,target 25。 - jugutierTheme.Material
,您需要minSdkVersion
为21或更高。 - CommonsWareActivity
是所有其他活动的基类,我不认为它会被弃用。它们之间的关系是:
Activity
<- FragmentActivity
<- AppCompatActivity
<- ActionBarActivity
'<-' 在这里表示继承关系。根据参考资料,ActionBarActivity
已经被弃用,应该使用AppCompatActivity
代替。
因此,基本上使用AppCompatActivity
总是正确的选择。它们之间的区别如下:
Activity
是基本的。Activity
的情况下,FragmentActivity
提供了使用Fragment
的功能。FragmentActivity
的情况下,AppCompatActivity
提供了ActionBar
的功能。FragmentActivity
继承自 ComponentActivity
,而 ComponentActivity
又继承自 Activity
。 - Sourav Kannantha BAppCompatActivity
截至撰写本文时(请查看链接以确认此仍然正确),Android 文档建议使用 AppCompatActivity
如果您正在使用应用栏。
这是给出的理由:
从 Android 3.0(API 级别 11)开始,所有使用默认主题的活动都具有 ActionBar 作为应用栏。然而,随着各个 Android 版本的推出,原生 ActionBar 逐渐增加了应用栏功能。因此,原生 ActionBar 的行为取决于设备可能使用的 Android 系统版本。相比之下,最新功能添加到支持库的 Toolbar 版本中,并且可以在任何能够使用支持库的设备上使用。
因此,您应该使用支持库的 Toolbar 类来实现您的活动应用栏。使用支持库的工具栏有助于确保您的应用程序在最广泛的设备范围内具有一致的行为。例如,Toolbar 小部件在运行 Android 2.1(API 级别 7)或更高版本的设备上提供材料设计体验,但本机操作栏除非设备运行 Android 5.0(API 级别 21)或更高版本,否则不支持材料设计。
添加 ToolBar 的一般方向为:
AppCompatActivity
NoActionBar
。ToolBar
添加到每个活动的 XML 布局中。onCreate
中获取 ToolBar
。有关详细信息,请参见文档说明。它们非常清晰和有用。
AppCompatActivity
。例如,您的MainActivity
将如下所示:public class MainActivity extends AppCompatActivity {
....
....
}
如果要使用 AppCompatActivity
,请确保已下载了Google支持库(您可以在“工具”->“Android”->“SDK管理器”中检查此项)。然后,在您应用的 gradle.build 文件中,只需包含gradle依赖项:
compile 'com.android.support:appcompat-v7:22:2.0'
你可以将这个AppCompat
作为你的主要Activity
,然后可以用它来启动Fragments或其他Activities(这取决于你正在构建的应用程序类型)。
《BigNerdRanch》这本书是一个很好的资源,但是它已经过时了。阅读一下里面关于Android如何工作的通用信息,但不要指望它们使用的具体类是最新的。
Activity
类是基础类,自API 11开始支持Fragment管理。因为其专业化程度更高,不再推荐纯粹使用。
ActionBarActivity
曾一度成为Activity类的替代品,因为它使得在应用程序中处理ActionBar变得容易。
AppCompatActivity
是新的方法,因为不再鼓励使用ActionBar,而应该使用Toolbar(当前ActionBar的替代品)。 AppCompatActivity继承自FragmentActivity,所以如果您需要处理Fragment,则可以通过Fragment Manager实现。 AppCompatActivity适用于任何API,不仅仅是16+(谁说过这话?)。 您可以通过在Gradle文件中添加compile 'com.android.support:appcompat-v7:24:2.0'
来使用它。我在API 10上使用它,表现很好。
Toolbar
。 - CommonsWare这里存在很大的混淆,尤其是如果您阅读过时的资料。
基本的一个是Activity
,它可以显示片段(Fragments)。如果您的Android版本> 4,可以使用此组合。
但是,还有一个支持库,涵盖了您提到的其他类:FragmentActivity
、ActionBarActivity
和AppCompat
。最初它们被用来支持Android版本< 4上的片段,但实际上它们也用于从较新版本的Android中回溯功能(例如Material Design)。
最新的是AppCompat
,另外两个已经过时。我使用的策略是始终使用AppCompat
,以便在将来的Android版本回溯时应用程序已准备就绪。
由于Android未来版本中名称可能会更改(目前最新的是AppCompatActivity
,但它可能在某个时候更改),因此我认为一个好的做法是创建一个类Activity
,该类继承AppCompatActivity
,然后所有的活动都从该类继承。如果明天他们将名称更改为AppCompatActivity2
,您只需要在一个地方进行更改。
FragmentActivity
。你只能托管Fragment
。在较新的 Android 版本中,Activity
类本身已经更新以直接托管它们。为了支持旧版本,引入了FragmentActivity
。 - Ravi K ThapliyalActivity
支持ActionBar
。早期版本通过ActionBarActivity
来实现该功能,但它现在已经被弃用并被替换为AppCompatActivity
。由于这两个类都扩展自FragmentActivity
,因此它们也支持Fragment
的托管。 - Ravi K Thapliyal