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

3Ne*_*Nex 3 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我在我的测试应用程序中编写它时,我收到ADT的警告说

调用需要API级别14(当前最小值为11):android.app.ActionBar#setHomeButtonEnabled

我的应用程序确实是最低API级别11,因为它应该是根据教程,但为什么ADT表现得如此自鸣得意告诉我这不属于那里,当调用该方法是在一个检查当前版本的块内?培训计划继续说服我这可以说:

警告:使用SDK_INT阻止旧系统执行新API只能在Android 2.0(API级别5)及更高级别上运行.旧版本将遇到运行时异常.

但是,当ADT甚至不让我编译它时,避免运行时错误也无济于事.

Sim*_*iak 9

但为什么ADT表现得如此自鸣得意告诉我这不属于那里,当对该方法的调用是在一个检查当前版本的块内

是的,你添加了它,但IDE对通过Build检查版本一无所知.

只需添加@SuppressLint("NewApi"),错误就会消失.或者您可以创建波纹管方法并在条件中使用它们:

@TargetApi(14)
private void actionAPI14() {
   getActionBar().setHomeButtonEnabled(false);
}

private void action() {
   getSupportActionBar().setHomeButtonEnabled(false);
}
Run Code Online (Sandbox Code Playgroud)

始终可以使用支持包来获得较低的API版本.