menu对象是activity默认提供的,但它只能在oncreateOptionsMenu()中使用,如果我们需要平板开发,希望在fragment中也能创建menu菜单,就需要我们自己手动创建menu对象。
Menu menu = ?// How to create an instance !?
new MenuInflater(context).inflate(R.menu.my_menu, menu)
有两种解决方案:
一:
使用ActionbarSherlock 中的Menu系列api:
Menu menu = new MenuBuilder(context);
或者干脆,自己写一个MenuBuilder。
二:
通过反射机制调用android内核类:
public Menu newMenuInstance(Context context) {
try {
Class<?> menuBuilderClass = Class.forName("com.android.internal.view.menu.MenuBuilder");
Constructor<?> constructor = menuBuilderClass.getDeclaredConstructor(Context.class);
return (Menu) constructor.newInstance(context);
} catch (Exception e) {e.printStackTrace();}
return null;
}
来源:
本文介绍如何在Android开发中手动创建Menu实例,以便在Fragment中使用菜单功能。提供了两种方法:一是使用ActionbarSherlock中的Menu API;二是通过反射机制直接调用Android内部类。
2056

被折叠的 条评论
为什么被折叠?



