我一直在关注Android官方培训计划,在“管理活动生命周期”»“开始活动”课程中,有一段代码如下:
public void onCreate(Bundle savedInstanceState) {
/* ... some other stuff ... */
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// For the main activity, make sure the app icon in the action bar
// does not behave as a button
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);
}
}
但是当我在我的测试应用程序中编写它时,我会收到ADT的警告
调用需要API级别14(当前最小值为11): android.app.ActionBar#setHomeButtonEnabled
我的应用程序确实是最低API级别11,因为它应该按照教程,但为什么ADT表现得如此自鸣得意告诉我这不属于那里,当对该方法的调用是在一个块中检查当前版?培训计划继续说服我这样说:
警告:使用SDK_INT阻止旧系统执行新系统 API在Android 2.0(API级别5)及更高版本上以这种方式工作。 旧版本将遇到运行时异常。
但是,当ADT甚至不让我编译它时,避免运行时错误也无济于事。
答案 0 :(得分:9)
但为什么ADT表现得如此自鸣得意告诉我这不属于那里, 当对该方法的调用位于检查当前的块内时 版本
是的,你添加了它,但IDE
一无所知,你正在通过Build检查版本。
只需添加 @SuppressLint(“NewApi”),错误就会消失。或者您可以创建波纹管方法并在条件下使用它们:
@TargetApi(14)
private void actionAPI14() {
getActionBar().setHomeButtonEnabled(false);
}
private void action() {
getSupportActionBar().setHomeButtonEnabled(false);
}
您始终可以使用支持包来获得较低的API版本。
答案 1 :(得分:1)
为什么不使用支持jar来提供向后支持。它也将运行在较低的API上。