我来自iOS,它很简单,你只需要使用UIViewController。然而,在Android中,事情似乎要复杂得多,特定的API级别有特定的uiccomponent。我正在阅读BigNerdRanch for Android(这本书大约有2年的历史了),他们建议我使用Activity来托管我的FragmentActivities。然而,我认为活动是不赞成的。
那么对于API级别22(至少支持API级别15或16),我究竟应该使用什么来托管组件,以及组件本身呢?所有这些都有用处吗,还是我应该只使用其中一两个?
对于最低API级别为15的情况,您需要使用AppCompatActivity。例如,你的MainActivity看起来是这样的:
public class MainActivity extends AppCompatActivity {
....
....
}
要使用AppCompatActivity,请确保您下载了谷歌支持库(您可以在您的Tools -> Android -> SDK管理器中检查这一点)。然后在你的应用的gradle中包含gradle依赖。构建文件:
compile 'com.android.support:appcompat-v7:22:2.0'
你可以使用这个AppCompat作为你的主活动,然后它可以用来启动Fragments或其他活动(这取决于你正在构建的应用类型)。
《BigNerdRanch》这本书是一个很好的资源,但是是的,它已经过时了。阅读它可以获得关于Android如何工作的一般信息,但不要期望他们使用的特定类是最新的。
Activity是所有其他Activity的基类,我不认为它会被弃用。它们之间的关系是:
Activity <- FragmentActivity <- AppCompatActivity <- ActionBarActivity
'<-'在这里表示继承。参考说ActionBarActivity已弃用,改用AppCompatActivity。
所以基本上,使用AppCompatActivity总是正确的选择。它们之间的区别是:
活动是最基本的。
基于Activity, FragmentActivity提供了使用Fragment的能力。
基于FragmentActivity, AppCompatActivity为ActionBar提供了一些特性。
2019:使用AppCompatActivity
在写这篇文章的时候(检查链接确认它仍然是正确的),Android文档建议使用AppCompatActivity如果你正在使用应用程序栏。
这是给定的理性:
Beginning with Android 3.0 (API level 11), all activities that use
the default theme have an ActionBar as an app bar. However, app bar
features have gradually been added to the native ActionBar over
various Android releases. As a result, the native ActionBar behaves
differently depending on what version of the Android system a device
may be using. By contrast, the most recent features are added to the
support library's version of Toolbar, and they are available on any
device that can use the support library.
For this reason, you should use the support library's Toolbar class to
implement your activities' app bars. Using the support library's
toolbar helps ensure that your app will have consistent behavior
across the widest range of devices. For example, the Toolbar widget
provides a material design experience on devices running Android 2.1
(API level 7) or later, but the native action bar doesn't support
material design unless the device is running Android 5.0 (API level
21) or later.
添加工具栏的一般方向是
添加v7版appcompat支持库
让你所有的活动扩展AppCompatActivity
在Manifest中声明你想要NoActionBar。
在每个活动的xml布局中添加一个工具栏。
在每个活动的onCreate中获取工具栏。
有关详细信息,请参阅文档说明。它们很清楚,很有帮助。
对于最低API级别为15的情况,您需要使用AppCompatActivity。例如,你的MainActivity看起来是这样的:
public class MainActivity extends AppCompatActivity {
....
....
}
要使用AppCompatActivity,请确保您下载了谷歌支持库(您可以在您的Tools -> Android -> SDK管理器中检查这一点)。然后在你的应用的gradle中包含gradle依赖。构建文件:
compile 'com.android.support:appcompat-v7:22:2.0'
你可以使用这个AppCompat作为你的主活动,然后它可以用来启动Fragments或其他活动(这取决于你正在构建的应用类型)。
《BigNerdRanch》这本书是一个很好的资源,但是是的,它已经过时了。阅读它可以获得关于Android如何工作的一般信息,但不要期望他们使用的特定类是最新的。