在我的应用中,我有一个托管两个片段的活动。如果我将一个MenuItem添加到菜单中,我可以在我的片段中检索它吗? Activity中的OptionMenu和他的子片段中的OptionMenu之间的联系是什么?
答案 0 :(得分:5)
您必须使用setHasOptionsMenu();
作为传递给它的参数调用true
,然后您可以覆盖onCreate选项菜单。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Enable the option menu for the Fragment
setHasOptionsMenu(true);
}
如果您想为每个片段设置不同的optionsMenu,您将定义两个不同的菜单xml文件,并在onCreateOptionsMenu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment1_menu, menu);
}
答案 1 :(得分:0)
您无法在子片段中捕获活动菜单的事件。相反,您可以让您的片段实现类似MenuItem.OnMenuItemClickListener
的内容。在您的活动的onOptionsItemSelected(MenuItem item)
方法中,您只需致电YourFragment
。onMenuItemClick()
。
答案 2 :(得分:0)
我发现我可以在活动MenuItem
中添加onCreateOptionsMenu()
,然后通过他们的ID在Fragment
s中检索它们,如下所示:
的活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
itemId= 0;
menu.add(0, itemId, 0, "item");
return super.onCreateOptionsMenu(menu);
}
片段:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
itemId= 0
MenuItem menuItem= menu.findItem(itemId);
}