【问题标题】:Action Bar - Menu Button - Missing操作栏 - 菜单按钮 - 缺失
【发布时间】:2012-09-07 15:08:21
【问题描述】:

我设法通过删除一些东西(我怀疑)搞砸了我的一个 Android 项目。以下是我的清单和菜单资源。由于某种原因,当我运行应用程序时,我的操作栏没有显示菜单按钮。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
    android:title="@string/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="never" />
</menu>

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp"
android:versionCode="6"
android:versionName="2.1.0" >

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MyActivity"
        android:label="@string/title_activity" 
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

我的活动代码中也有这个

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.menu_settings:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

但在应用程序运行时仍然没有创建菜单/选项按钮。有什么想法吗?

编辑 1

经过一些重大试验后,我发现向我的应用程序添加本地化支持导致了这个问题。

我删除了所有本地化的 values-* 目录,操作栏又回来了,然后我将 values 目录复制到 values-en 并在我的英文设备上运行它。然后操作栏消失了。这对任何人都有启发吗?

【问题讨论】:

  • 我不是故意要删除我最后的评论。听起来您的问题出在这一行 android:showAsAction="never"
  • 我也有同样的想法,对照具有相同菜单资源文件的项目进行检查,该项目显示正常。我已经尝试使用android:showAsAction="always",但仍然没有显示任何内容。
  • 我从未使用过never,这很奇怪。我的总是读 android:showAsAction="ifRoom|withText"

标签: android android-actionbar missing-features


【解决方案1】:

屏幕溢出菜单按钮仅出现在缺少屏幕外菜单按钮的设备的操作栏中。尝试按设备或模拟器上的 MENU 按钮。

【讨论】:

  • 在Genymotion上,可以按Ctrl+M调出菜单。
  • 这适用于 AndroidTV 吗?看我的问题stackoverflow.com/questions/65296436/…
  • @MostowskiCollapse:这个问题以及大多数答案都来自 2012 年。这与现代 Android 几乎没有什么关系,而且我不知道操作栏的行为如何当前版本的 Android TV。对不起!
  • 是的,这是很久以前的事了。
【解决方案2】:

好的,找出导致问题的原因,如果之前有人遇到过这个问题,我可能没有在我的原始帖子中提供足够的信息。

我犯的致命错误是

cp -r res/values res/value-en

我对所有语言环境都这样做了,这也复制了styles.xml 文件。将这个放在目录中会导致非常烦人的头痛!

删除它并在res/values 目录和res/values-v* 目录中仅包含styles.xml 文件解决了该问题。

【讨论】:

  • 您使用的是什么 API 版本?
【解决方案3】:

我认为您的onCreateOptionsMenu - MenuInflater 是问题所在,请更改为以下内容,看看是否适合您:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity, menu);
    return true;
}

【讨论】:

  • 谢谢,出于好奇,我测试了您的代码,但该代码与我的相同。仍然没有操作栏!
  • 好吧,这很好奇。如果您将 android:minSdkVersion="8" 更改为 android:minSdkVersion="11",因为 API 11 中引入了 MenuInflator,该怎么办
  • @Asok: MenuInflater 是在 API 级别 1 中引入的,而不是 11 级。
  • @CommonsWare 谢谢,很抱歉ActionBar 是我想的。
【解决方案4】:
 android:showAsAction="never" 

将此行更改为:

 android:showAsAction="ifRoom" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多