我刚开始学习Android开发,基本遵循http://developer.android.com/training/basics/firstapp/starting-activity.html的教程。但有一件事情让我困扰:我有两个类,都是使用“Android活动”创建向导创建的:
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一直给我以下错误提示:
直到我注释掉了其中的一行(如上所示),现在应用程序在我的Android设备上似乎可以编译和运行而没有错误。(好吧,至少没有那个错误)调用需要API级别11(当前最小值为8):android.app.Activity#getActionBar
调用需要API级别11(当前最小值为8):android.app.ActionBar#setDisplayHomeAsUpEnabled
所以:
- 为什么
getActionBar().setDisplayHomeAsUpEnabled(true);
在一个类中会出现这个错误,但是在另一个类中这一行代码完全没有错,甚至没有警告? - “Android Activity”创建向导中是否存在错误,某种方式下
getActionBar().setDisplayHomeAsUpEnabled(true);
语句在一个活动中是错误的,但在另一个活动中却完全正确? - Eclipse Lint是否存在错误,该语句是否实际上在两个活动中都是正确的(或者可能在两个活动中都是错误的)?
- 我需要怎样做才能在不将minSdkVersion从“8”更改为“11”的情况下解决此问题?我认为“android-support-v4.jar”文件是一个兼容性库,可在版本8的设备上运行,以处理在版本11设备中本地处理的东西。
- 当我看到这个错误时,真正正确的做法是什么?