我刚开始做Android开发, 或多或少遵循http://developer.android.com/training/basics/firstapp/starting-activity.html教程, 有一件事一直困扰着我: 我有两个类,都是使用“Android Activity”创建向导创建的:
public class PlacesActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_places);
// I manually commented out the following line to get it to compile.
// getActionBar().setDisplayHomeAsUpEnabled(true);
}
// ... other methods
}
和
public class ShowOnePlace extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_one_place);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
// ... other methods
}
Eclipse 一直给我以下错误:
Call requires API level 11 (current min is 8): android.app.Activity#getActionBar
Call requires API level 11 (current min is 8): android.app.ActionBar#setDisplayHomeAsUpEnabled
直到我注释掉其中的一个(如上所示)。 现在应用程序似乎可以在我的 Android 设备上编译和运行 没有错误。 (好吧,至少没有那个错误)。
所以:
- 为什么
getActionBar().setDisplayHomeAsUpEnabled(true);
在一个类中给出了该错误,但完全相同的行在另一个类中不是错误——甚至不是警告? - “Android Activity”创建向导中是否存在错误,并且
getActionBar().setDisplayHomeAsUpEnabled(true);
语句在一个 Activity 中是错误的,但在另一个 Activity 中却完全正常? - Eclipse Lint 中是否存在错误,并且该声明实际上在两个 Activity 中都是正确的(或者可能在两个 Activity 中都是错误的)?
- 我该怎么做才能在不将 minSdkVersion="8"更改为 minSdkVersion="11"的情况下解决此问题?我的印象是“android-support-v4.jar”文件是一个兼容库,它在版本 8 设备上运行以处理在版本 11 设备中 native 处理的内容。
- 当我看到此错误时真正正确的做法是什么?
最佳答案
使用 getSupportActionBar()
而不是 getActionBar()
。这将提供 ActionBar API 级别低于 11 的功能。
关于android - 如何使用 Android Activity 修复 "Call requires API level 11"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654039/