自己创建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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念