我一直在关注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甚至不让我编译它时,避免运行时错误也无济于事.
但为什么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版本.
| 归档时间: |
|
| 查看次数: |
8582 次 |
| 最近记录: |