【问题标题】:Physical menu button doesn't show options物理菜单按钮不显示选项
【发布时间】:2012-09-12 19:09:05
【问题描述】:

我在我的应用程序中使用带有片段的 ActionBarSherlock 选项卡:

public class ExampleActivity extends SherlockFragmentActivity{}

我在操作栏中添加了一个选项菜单。问题是,虽然这确实会在单击操作栏中的虚拟按钮时显示选项菜单,但在按下物理按钮时却不会这样做。我希望在按下物理菜单按钮时显示选项菜单。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //return super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.menu_prefs:
            Intent i = new Intent(this,ShowSettingsActivity.class);
            startActivityForResult(i, requestCode);
            return true;
        case R.id.menu_faq:
            startActivity(new Intent(this, AboutApp.class));
            return true;
        case R.id.menu_contact:
            startActivity(new Intent(this, FeedbackApp.class));
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

在 res/menu/options_menu.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:icon="@drawable/ic_settings_dark"
        android:orderInCategory="100"
        android:showAsAction="always">
      <menu
          android:id="@+id/e">
        <item
            android:id="@+id/menu_prefs"                                
            android:title="@string/menu_prefs"/>
        <item
            android:id="@+id/menu_faq"                                
            android:title="@string/menu_faq"/>
        <item
            android:id="@+id/menu_contact"                                
            android:title="@string/menu_contact"/>
    </menu>
    </item>
</menu>

如果我删除子菜单,它会在单击物理按钮时显示选项菜单。

【问题讨论】:

    标签: java android menu


    【解决方案1】:

    (对不起,我的第一个答案离题了)

    我不认为&lt;menu&gt; XML 元素接受 android:id 作为属性。你试过删除它吗?

    再试一次:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
        return true; // override the useless returned value by super()
    }
    

    【讨论】:

    • 是的,我做到了。物理菜单按钮按下没有任何反应。我也尝试了您以前的解决方案。虽然按下按钮时确实显示了选项菜单,但虚拟菜单按钮从应用程序中消失了。
    • 只要我在选项卡中实例化活动,菜单按钮就会显示在虚拟菜单按钮和物理菜单按钮上。但是现在我已经实现了 Fragments,选项菜单不会出现在物理按钮点击上。
    【解决方案2】:

    试试这个代码:

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

    希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2015-07-26
      • 2022-01-03
      • 2013-02-21
      • 1970-01-01
      • 2014-04-07
      相关资源
      最近更新 更多