【问题标题】:Android: required android.support.v7.app.ActionBar found android.app.ActionBarAndroid:需要 android.support.v7.app.ActionBar 找到 android.app.ActionBar
【发布时间】:2014-12-15 10:50:48
【问题描述】:

我正在尝试使用 getActionBar(); 方法并收到此错误: required android.support.v7.app.ActionBar found android.app.ActionBar 。我该如何纠正这个问题?

【问题讨论】:

  • 不是重复的

标签: android android-actionbar


【解决方案1】:

发生此错误是因为您正在创建一个对象并将其传递给不同的类引用变量。因为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 类对象。

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

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

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

【讨论】:

    【解决方案2】:

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

    import android.support.v7.app.ActionBar
    

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

    import android.app.ActionBar
    

    欲了解更多信息,请转到Official Docs

    【讨论】:

      【解决方案3】:

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

      因此,如果您想使用来自import android.app.ActionBar 的 ActionBar,那么您的清单文件中必须具有最低 api 级别 11。否则,您必须在项目中添加支持 v4 库,以使用来自 android.support.v7.app.ActionBar 包的操作栏。

      【讨论】:

        【解决方案4】:

        确保您的应用具有应用栏或标题栏,在清单文件或 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

        【讨论】:

          【解决方案5】:

          如果运行 api 11 及更高版本

          import android.app.ActionBar;
          

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

          【讨论】:

          • 这在another answer中已经提到了。
          • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
          猜你喜欢
          • 2016-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-08
          • 1970-01-01
          相关资源
          最近更新 更多