Android:需要android.support.v7.app.ActionBar找到android.app.ActionBar

时间:2014-12-15 10:50:48

标签: android android-actionbar

我正在尝试使用 getActionBar(); 方法,我收到此错误:必需android.support.v7.app.ActionBar找到android.app.ActionBar。我怎么能纠正这个?

5 个答案:

答案 0 :(得分:8)

发生此错误是因为您正在创建对象并将其传递给其他类引用变量。由于getActionManager提供android.app.ActionBar的对象,但您尝试将android.app.ActionBar类对象分配给android.support.v7.app.ActionBar

但这两个类都提供相同的功能。当我们的uses-sdk min版本少于api 11时使用android.support.v7.app.ActionBar类。为了使ActionBar的对象低于api 11,我们需要android.support.v7.app.ActionBar类对象。

要获得操作栏,您需要遵循以下两种方法之一。

  1. import android.support.v7.app.ActionBar并使用getSupportActionBar()方法od活动。

  2. 转到AndroidManifest.xml文件并更改<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" /> 并导入android.app.ActionBar并使用getActionBar()

答案 1 :(得分:1)

如果支持的API级别低于11,则必须在项目中添加支持v4库才能使用操作栏。

import android.support.v7.app.ActionBar

如果仅支持API级别11及更高级别:

import android.app.ActionBar

有关更多信息,请转到Official Docs

答案 2 :(得分:0)

确保您的清单文件中的最低api级别高于11.因为仅在11以下的api级别支持包android.support.v7.app.ActionBar

因此,如果您想使用import android.app.ActionBar中的ActionBar,那么您必须在清单文件中使用minimun api level 11。否则,您必须在项目中添加支持v4库,以便从android.support.v7.app.ActionBar包中使用操作栏。

答案 3 :(得分:0)

确保您的应用有应用栏或标题栏,检查清单文件或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();

时会抛出null异常

确保使用import android.support.v7.app.ActionBar

答案 4 :(得分:-1)

如果运行api 11及更高版本

import android.app.ActionBar;

如果它声明它已经存在,请务必将其删除