我刚开始做 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 不断给我以下错误:
调用需要 API 级别 11(当前最低为 8):android.app.Activity#getActionBar
调用需要 API 级别 11(当前最低为 8):android.app.ActionBar#setDisplayHomeAsUpEnabled
直到我注释掉其中一行(如上所示)。现在,该应用程序似乎可以在我的 Android 设备上编译和运行而没有错误。(好吧,至少没有那个错误)。
所以:
- 为什么
getActionBar().setDisplayHomeAsUpEnabled(true);
在一个类中给出该错误,但在另一类中完全相同的行不是错误——甚至不是警告? - “Android Activity”创建向导中是否存在错误,并且不知何故该
getActionBar().setDisplayHomeAsUpEnabled(true);
语句在一个活动中是错误的,但在另一个活动中却完全没问题? - Eclipse Lint 中是否存在错误,并且该语句在两个活动中实际上都可以(或者在两个活动中可能都是错误的)?
- 我该怎么做才能在不将 minSdkVersion="8" 更改为 minSdkVersion="11" 的情况下解决此问题?我的印象是“android-support-v4.jar”文件是一个在版本 8 设备上运行的兼容性库,用于处理在版本 11 设备中本机处理的内容。
- 当我看到此错误时,真正正确的做法是什么?