【发布时间】:2014-12-15 10:50:48
【问题描述】:
我正在尝试使用 getActionBar(); 方法并收到此错误: required android.support.v7.app.ActionBar found android.app.ActionBar 。我该如何纠正这个问题?
【问题讨论】:
-
不是重复的
我正在尝试使用 getActionBar(); 方法并收到此错误: required android.support.v7.app.ActionBar found android.app.ActionBar 。我该如何纠正这个问题?
【问题讨论】:
发生此错误是因为您正在创建一个对象并将其传递给不同的类引用变量。因为getActionManager 给出了android.app.ActionBar 的对象,但您试图将android.app.ActionBar 类对象分配给android.support.v7.app.ActionBar。
但这两个类都提供相同的功能。 android.support.v7.app.ActionBar Class 在我们的 uses-sdk min version 小于 api 11 时使用。要获取低于 api 11 的 ActionBar 对象,我们需要 android.support.v7.app.ActionBar 类对象。
要获得操作栏,您需要遵循以下两种方法之一。
import android.support.v7.app.ActionBar 并使用getSupportActionBar() 方法和活动。
转到 AndroidManifest.xml 文件并更改 <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" />
并导入android.app.ActionBar 并使用getActionBar()
【讨论】:
如果支持低于 11 的 API 级别,您必须在项目中添加支持 v4 库才能使用操作栏。
import android.support.v7.app.ActionBar
如果仅支持 API 级别 11 及更高级别:
import android.app.ActionBar
欲了解更多信息,请转到Official Docs
【讨论】:
确保清单文件中的最低 api 级别高于 11。因为包 android.support.v7.app.ActionBar 仅支持低于 11 的 api 级别。
因此,如果您想使用来自import android.app.ActionBar 的 ActionBar,那么您的清单文件中必须具有最低 api 级别 11。否则,您必须在项目中添加支持 v4 库,以使用来自 android.support.v7.app.ActionBar 包的操作栏。
【讨论】:
确保您的应用具有应用栏或标题栏,在清单文件或 style.xml 中检查您的应用主题 如果你的风格是这样的:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- your style -->
</style>
使用ActionBar actionbar = getSupportActionBar();就可以了
但如果你的风格是这样的:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- your style-->
</style>
使用ActionBar actionbar = getSupportActionBar();会抛出空异常
确保你使用import android.support.v7.app.ActionBar
【讨论】:
如果运行 api 11 及更高版本
import android.app.ActionBar;
如果它声明它已经存在,请务必删除它
【讨论】: