我有一个ListFragment,我必须添加一个菜单。这是我的代码: listuser_menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/any_option"
android:title="In Context Menu" />
</menu>
我的ListFragment:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View mFooterView;
// We need to use a different list item layout for devices older than Honeycomb
int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
android.R.layout.simple_list_item_activated_1:android.R.layout.simple_list_item_1;
if(getListAdapter()==null){
// init adapter
adapter=new UserArrayAdapter(getActivity(),
MOBILE_OS);
}
else{
adapter.notifyDataSetChanged();
}
// set adapter
registerForContextMenu(getListView());
setListAdapter(adapter);
}
@Override
public void onCreateContextMenu(final ContextMenu menu, final View v,
final ContextMenuInfo menuInfo){
menu.clear();
super.onCreateContextMenu(menu, v, menuInfo);
final MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.listuser_menu, menu);
}
但是我看不到我的菜单..为什么?如何选择注册选项菜单?谢谢!
答案 0 :(得分:7)
可以在片段中添加菜单,在片段中使用以下代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.listuser_menu, menu);
}
使用setHasOptionsMenu将允许您的片段显示菜单。
答案 1 :(得分:2)
在MainActivity中使用此示例代码。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
SubMenu subMenu1 = menu.addSubMenu("Action Item");
subMenu1.add(0, 1, 0, "Sample");
subMenu1.add(0, 2, 0, "Menu");
subMenu1.add(0, 3, 0, "Sair");
MenuItem subMenu1Item = subMenu1.getItem();
subMenu1Item.setIcon(R.drawable.ic_title_share_default);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
答案 2 :(得分:1)
是的,您可以向ListFragment添加菜单,将以下代码添加到 ListFragment
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
之后添加片段版本onCreateOptionsMenu()方法,如下所示
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_xml, menu);
}
<@> @ Sherlock Yiu忘了将“ super.onActivityCreated(savedInstanceState); ”添加到 onActivityCreated()方法中,其余方法相同。
也不要忘记将“ android-support-v4.jar ”添加到项目库中。
以上代码段对我有用。