【问题标题】:android actionbar oncreateoptionsmenu not calledandroid actionbar oncreateoptionsmenu 未调用
【发布时间】:2012-10-31 11:43:34
【问题描述】:

在我的应用中,我可以看到操作栏,但看不到设置项,因为它从不调用 onCreateOptionsMenu。

对于目标 sdk 16 的应用程序,它由一个选项卡组成,每个选项卡都是一个片段。 在 Fragment 类上,在 onCreate() 期间,我调用了 setHasOptionsMenu(true)。 主题是 Theme.Holo.Light。 如果我在模拟器(Android 4.0)上运行应用程序并按下硬件菜单项,它会调用该方法,但它会向我显示类似于 Android 2.3 菜单的菜单,而不是在操作栏中!!

我不认为问题出在 sdk 版本上,因为 actionbar 是可见的! 任何想法?我可以检查什么来找到错误?

非常感谢您的每一次帮助! 我最诚挚的问候 曼努埃拉

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    我遇到了同样的问题并通过这种方式解决了

    manifest.xml

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

    移除 android:theme="@android:style/Theme.NoTitleBar"

    【讨论】:

    • 如果我想要一个全屏应用怎么办?
    【解决方案2】:

    这是正常行为。 系统会自行适应运行它的硬件。

    如果设备没有硬件按钮,它会显示为操作栏中的下拉菜单。 如果设备有硬件按钮,它会显示为从菜单按钮附近升起。

    编辑

    如果菜单在操作栏上,它只创建一次(因为菜单停留在屏幕上,不会像硬件按键手机那样消失),所以还有另一个回调,我认为它是 onPrepareOptionsMenu 或类似的东西,在屏幕上显示菜单之前调用一个。

    【讨论】:

    • 如果我在设备上运行应用程序(HTC OneS,没有菜单按钮,只有 Home 和 Back 按钮)会有相同的行为。
    • 我已经添加了覆盖方法 onPrepareOptionsMenu() 和 onOptionsItemSelected() 但在操作栏上我只能看到标题。
    • 一个新信息:如果我添加 getActionBar().setDisplayHomeAsUpEnabled(true) 我可以毫无问题地看到标题左侧的导航按钮!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多