呼叫需要API级别14(当前最小值为11)

时间:2013-11-30 10:05:09

标签: android adt

我一直在关注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甚至不让我编译它时,避免运行时错误也无济于事。

2 个答案:

答案 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上。