我一直在跟随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会这么聪明地告诉我它不属于那里呢?因为调用该方法的块位于检查当前版本的块内。培训计划继续说服我这是可以接受的:
注意:仅在Android 2.0(API级别5)及更高版本上,使用SDK_INT防止旧系统执行新API的方法才能起作用。旧版本将遇到运行时异常。
但是当ADT甚至不允许我编译代码时,避免运行时错误并没有太大帮助。