7

在我的应用程序中,我有一个承载两个片段的活动。如果我将 MenuItem 添加到菜单中,我可以在我的片段中检索它吗?Activity 中的 OptionMenu 和他的子片段中的 OptionMenu 之间有什么联系?

4

3 回答 3

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);


}
于 2013-03-15T03:11:54.730 回答
0

我发现我可以MenuItem在 Activity中添加onCreateOptionsMenu(),然后Fragment通过它们的 id 在 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);                         
}
于 2013-03-16T21:38:30.710 回答
0

您无法在子片段中捕获活动菜单的事件。相反,您可以让您的片段实现类似MenuItem.OnMenuItemClickListener. 在您的活动onOptionsItemSelected(MenuItem item)方法中,您只需调用YourFragment. onMenuItemClick().

于 2013-03-15T04:03:23.373 回答