物理菜单按钮不显示选项

时间:2012-09-12 09:47:33

标签: java android menu

我在我的应用程序中使用ActionBarSherlock Tabs with Fragments:

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>

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

2 个答案:

答案 0 :(得分:0)

(抱歉我的第一个答案不合时宜)

我不认为<menu> 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()
}

答案 1 :(得分:0)

试试这段代码:

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

希望这会对你有所帮助。