溢出菜单未显示 - android
Overflow menu doesn't show - android
我的 activity 中有一个操作栏,其中包含 3 个项目 - 添加项目、选项项目和溢出项目。
添加项目设置为始终在操作栏中可见,溢出项目也是如此。
我的问题是选项项目 - 我希望它显示在溢出菜单中,但每当我单击溢出项目(带有 3 个点的图标)时,它什么都不做。但是,如果我单击设备上的内置菜单按钮,它会显示带有选项项的溢出菜单。
所以我的问题是 - 为什么当我单击溢出图标时没有任何反应,但是当我单击设备上的内置菜单按钮时,它却显示溢出菜单?
这是我的 XML 菜单代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_add"
android:icon="@drawable/ic_action_new"
android:showAsAction="ifRoom"
android:title="@string/action_add_ringtone"/>
<item
android:id="@+id/action_set_options"
android:showAsAction="never"
android:title="Options" />
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_overflow"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action_settings"/>
</menu>
这是我对 onOptionsItemSelected 的实现:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
return super.onOptionsItemSelected(item);
case R.id.action_add:
pickRingtone(1000);
return true;
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
您将需要重写 onCreateOptionsMenu
方法(Android Studio 中的 Ctrl+O
)。
@Override
public void onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_menu_name, menu);
}
对于片段,MenuInflater
已经是一个参数,您需要在某处调用 setHasOptionsMenu(true);
,例如在 onCreate
的末尾。
我的 activity 中有一个操作栏,其中包含 3 个项目 - 添加项目、选项项目和溢出项目。 添加项目设置为始终在操作栏中可见,溢出项目也是如此。 我的问题是选项项目 - 我希望它显示在溢出菜单中,但每当我单击溢出项目(带有 3 个点的图标)时,它什么都不做。但是,如果我单击设备上的内置菜单按钮,它会显示带有选项项的溢出菜单。
所以我的问题是 - 为什么当我单击溢出图标时没有任何反应,但是当我单击设备上的内置菜单按钮时,它却显示溢出菜单?
这是我的 XML 菜单代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_add"
android:icon="@drawable/ic_action_new"
android:showAsAction="ifRoom"
android:title="@string/action_add_ringtone"/>
<item
android:id="@+id/action_set_options"
android:showAsAction="never"
android:title="Options" />
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_overflow"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action_settings"/>
</menu>
这是我对 onOptionsItemSelected 的实现:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
return super.onOptionsItemSelected(item);
case R.id.action_add:
pickRingtone(1000);
return true;
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
您将需要重写 onCreateOptionsMenu
方法(Android Studio 中的 Ctrl+O
)。
@Override
public void onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_menu_name, menu);
}
对于片段,MenuInflater
已经是一个参数,您需要在某处调用 setHasOptionsMenu(true);
,例如在 onCreate
的末尾。