我有一个主要活动以及3个片段。我正在使用导航抽屉选择这些片段。我想根据当前显示的片段编辑操作栏中的溢出菜单选项。 例如: 如果现在显示片段A,我想在溢出按钮下有编辑,注销和设置选项。如果现在选择片段B,我应该只有那里的设置。
我尝试使用不同的xml覆盖主活动中的onCreateOptionsMenu(),并且使用不同的xml覆盖片段,但它没有帮助,因为只显示了主活动中的选项。
在主要活动中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
//return true;
return super.onCreateOptionsMenu(menu);
}
在片段A中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getActivity().getMenuInflater().inflate(R.menu.menu1, menu);
//return true;
return true;
}
main.xml中
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_signout"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Sign Out"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
menu1.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_edit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Edit Profile"/>
<item
android:id="@+id/action_signout"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Sign Out"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
答案 0 :(得分:0)
在片段setHasOptionsMenu(true)
中调用onCreate()
。
<强>
public void setHasOptionsMenu (boolean hasMenu)
强>报告此片段想参与填充 通过接收对onCreateOptionsMenu的调用选项菜单(菜单, MenuInflater)和相关方法。
如果
hasMenu
为真,则片段包含要提供的菜单项。
要隐藏特定的MenuItem,您可以在setVisible(false)
中为其调用onPrepareOptionsMenu()
。例如:
@Override
public void onPrepareOptionsMenu(Menu menu) {
//Hides MenuItem action_edit
menu.getItem(R.id.action_edit).setVisible(false);
}
答案 1 :(得分:0)
要覆盖选项菜单,您应该使用setHasOtionsMenu(true)和
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return false;
}
就是这样