自己创建Menu对象,在onCreateOptionsMenu()之外inflate menus.xml

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

来源:

http://stackoverflow.com/questions/14118820/how-to-create-a-menu-instance-programmatically-i-e-inflate-a-menu-outside-oncr

你可能感兴趣的:(自己创建Menu对象,在onCreateOptionsMenu()之外inflate menus.xml)