【问题标题】:Menu Items display in action bar in 2.1, but not in 4.0.3, 4.2 (nexus 4)using ActionBarSherlock菜单项在 2.1 中显示在操作栏中,但在使用 ActionBarSherlock 的 4.0.3、4.2 (nexus 4) 中不显示
【发布时间】:2013-07-11 03:13:55
【问题描述】:

我正在尝试在我的项目中实现 ActionBarSherlock。将菜单/操作项添加到操作栏正在 2.1 上工作,但在我的 nexus4 中没有,在 4.0.3 模拟器中也没有。问题是函数 onCreateOptionsMenu(Menu menu) 从未在我的设备中被调用,但在 2.1 中被调用,因此我手机的操作栏中没有显示任何操作项。

  1. 我已将 ActionBarSherlock 作为库包含在我的项目中。
  2. 我已在清单文件中的应用程序中设置了适当的主题。
  3. 我使用 SherlockActivity 扩展了我的活动课程。
  4. 我已经从 sherlock 库中重写了适当的类(目前我知道,如果没有,菜单也不会在 2.1 的操作栏中显示)

以下是设置主题的清单的一部分。

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light.DarkActionBar" >

以下是 menu.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_item_call"
        android:showAsAction="always"
        android:title="Call"/>
    <item
        android:id="@+id/menu_item_share"
        android:showAsAction="always"
        android:title="Share"/>
    <item
        android:id="@+id/menu_item_save"
        android:showAsAction="always"
        android:title="Save"/>

</menu>

以下是活动的相关部分。

    //other imports
        import com.actionbarsherlock.app.SherlockActivity;
        import com.actionbarsherlock.view.Menu;
        import com.actionbarsherlock.view.MenuInflater;
        import com.actionbarsherlock.view.Window;

        public class SelectCategories extends SherlockActivity implements
                OnClickListener {


        //other code


        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            MenuInflater inflater = getSupportMenuInflater();
            inflater.inflate(R.menu.menu, menu);
            return super.onCreateOptionsMenu(menu);
//return true; also has no effect
        }
        }

我一直在尝试解决这个问题,但已经解决了几个小时但无法解决。请帮我。 提前谢谢你。

【问题讨论】:

  • 也可以在 Activity 中设置 android:theme,或者在 sherlock 库中检查你的覆盖类。

标签: android actionbarsherlock android-actionbar


【解决方案1】:

你必须 return true; 而不是 super.onCreateOptionsMenu(menu);

【讨论】:

    【解决方案2】:

    这是我在 ActionBarSherlock 项目中使用的 onCreateOptionsMenu 函数:

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
           getSupportMenuInflater().inflate(R.menu.menu, menu);
           return true;
        }
    

    我希望我能告诉你为什么你的工作不正常。

    【讨论】:

      【解决方案3】:

      你有没有这些在 onCreate

      private ActionBar mActionBar;
      mActionBar = getSupportActionBar();
      // mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
      // mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
      

      需要导入

      import com.actionbarsherlock.app.ActionBar;
      

      更新:操作栏

      公开声明

      com.actionbarsherlock.app.ActionBar

      活动顶部的窗口功能,可以显示 活动标题、导航模式和其他交互项目。

      从 Android 3.0(API 级别 11)开始,操作栏出现在 当活动使用系统的窗口时,活动窗口的顶部 Holo 主题(或其后代主题之一),这是默认设置。 您可以通过调用以其他方式添加操作栏 requestFeature(FEATURE_ACTION_BAR) 或通过在自定义中声明它 带有 windowActionBar 属性的主题。

      默认情况下,操作栏在左侧显示应用程序图标, 后跟活动标题。如果您的活动有选项菜单, 您可以直接从操作栏中访问选择项目 “行动项目”。还可以修改各种特性 操作栏或将其完全删除。

      从您的活动中,您可以通过以下方式检索 ActionBar 的实例 调用 getActionBar()。

      在某些情况下,操作栏可能会被另一个栏覆盖 使用 android.view.ActionMode 启用上下文操作。为了 例如,当用户在您的活动中选择一个或多个项目时,您 可以启用提供特定于所选操作的操作模式 项目,带有临时替换操作栏的 UI。虽然 UI 可能占用相同的空间,android.view.ActionMode API 是 与 ActionBar 的那些不同且独立。

      开发者指南 有关如何使用操作栏的信息, 包括如何添加操作项、导航模式等,请阅读 操作栏开发者指南。

      【讨论】:

      • 但是如果我们不使用那个对象怎么办呢?
      • 你什么意思,我只添加了这个,我的应用程序在 2.3 和 4.0.3 上都可以工作。如果这对你有用,请删除评论,我评论它是因为我不确定它是否适合你。
      • mActionBar 具有空值。惊讶。可能是这个原因。我必须弄清楚。
      • null actionBar 尝试添加 onCreate requestWindowFeature(Window.FEATURE_ACTION_BAR); //not sure which feature
      【解决方案4】:

      终于解决了问题。

      事实上,我正在尝试将现有项目更改为使用操作栏。主要的是该项目使用了已弃用的 TabActivity。由于 ActionBarSherlock 不提供其自定义实现,我认为它应该按原样使用。那是我的错误。删除 tabactivity 后,我可以看到两个版本的菜单。

      非常感谢所有试图提供帮助的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多