0

我在我的应用程序中使用带有片段的 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>

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

4

2 回答 2

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()
}
于 2012-09-12T10:02:45.190 回答
0

试试这个代码:

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

希望这会帮助你。

于 2012-09-12T11:09:05.937 回答