我是Android开发的新手,我正在http://developer.android.com进行培训,以便深入了解它。我是否使用支持库感到困惑 为清楚起见:我不需要支持早于11的API。
情况:向ActionBar添加项目我必须使用自己的命名空间才能使其工作(app:showAsAction="ifRoom"
而不是android:showAsAction="ifRoom"
),这是使用support-lib的正常行为,我是对的?
第一个问题:我为什么要使用它?我没有故意激活它!
第二个问题:
我可以同时使用getActionBar().setDisplayHomeAsUpEnabled(true);
和getSupportActionBar().setDisplayHomeAsUpEnabled(true);
来使" up" -functionality工作,这是正常的吗?如果我使用support-lib,我认为第一个不会工作?
如果你们中的一个能帮助我,我会很高兴的。我不想弄乱这些基础知识,所以我想知道我理解或配置错误。
编辑:我的"使用-sdk"在AndroidManifest中实际上看起来像这样:
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" />
答案 0 :(得分:1)
要回答您的第一个问题,首先根据您创建项目的方式,可能会自动为您启用。除了ActionBar之外,support library还有很多其他的东西,所以即使你的minSdkVersion = 11,使用它仍然是一个好主意。
要回答你的第二个问题,是的,两种方法都有效,这是正常的。启用支持库时,不会禁用或删除框架方法。只要他们最终运行的Android操作系统支持,它们仍然可以正常工作。例如,如果您的minSdkVersion为10而不是11,并且您尝试在运行Gingerbread的设备上运行该应用程序,则会在getActionBar()
调用时崩溃。
在您的情况下,您应该使用框架方法(getActionBar()
)。 ActionBar的documentation说:
此类包含在支持库中以与之兼容 API级别7及更高级别。如果您正在为API级别11开发应用程序 而且只有 ,你应该使用框架
ActionBar
类。
了解是否需要为给定方法或类使用支持库的最佳方法是参考该类的文档并注意&#34;在API级别中添加?&#34;符号。以下是ActionBar
的{{3}}非支持库版本,您可以在其中看到在API 11之后添加了一些方法。如果您需要这些方法中的任何一种,则应使用支持库。 / p>
另外,正如我之前所说,除了ActionBar
之外,您的应用还需要考虑其他事项。 documentation就是一个例子。它在API 14中添加,但它也存在于支持库中以实现向后兼容性。如果要使用GridLayout
,则应使用它的支持库版本。