将Android菜单XML资源解析为对象列表
我三天内无法解决这个问题。我有简单的XML菜单资源将Android菜单XML资源解析为对象列表,android,xml,parsing,resources,menu,Android,Xml,Parsing,Resources,Menu,我三天内无法解决这个问题。我有简单的XML菜单资源 我想在解析此XML后接收列表: 公共类菜单项{ 私有字符序列文本; 私有可绘制图像; 私有int-actionTag; //…能手和二传手。。。 } 对于菜单项的非标准操作,我需要此功能,但无法使用以下标准方法使用此资源: 。。。 MenuInflater充气机=getMenuInflater(); 充气机。充气(右菜单。一些菜单,菜单); ... 有人能帮我吗?谢谢。你可以很容易地 评论后更新: 获取资源ID和资源类型(图像、字符串、
我想在解析此XML后接收列表:
公共类菜单项{
私有字符序列文本;
私有可绘制图像;
私有int-actionTag;
//…能手和二传手。。。
}
对于菜单项的非标准操作,我需要此功能,但无法使用以下标准方法使用此资源:
。。。
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。一些菜单,菜单);
...
有人能帮我吗?谢谢。你可以很容易地
评论后更新:
...
PopupMenu p = new PopupMenu(this, null);
Menu menu = p.getMenu();
getMenuInflater().inflate(R.menu.some_menu, menu);
//Usage of menu
System.out.println("LOG id: "+ menu.getItem(0).getItemId());
System.out.println("LOG title: "+ menu.getItem(0).getTitle());
System.out.println("LOG icon: "+ menu.getItem(0).getIcon());
...
创建弹出菜单只是创建菜单对象的一个技巧,当菜单对象膨胀时,它将被xml上定义的信息填充。谢谢Raul。
2.33分不起作用。
我找到了解决办法
private菜单newMenuInstance(上下文){
试一试{
类menuBuilderClass=Class.forName(“com.android.internal.view.menu.MenuBuilder”);
构造函数=menuBuilderClass.getDeclaredConstructor(Context.class);
返回(菜单)构造函数.newInstance(上下文);
}捕获(例外e){
MyLog.GetMyLog().e(e);
}
返回null;
}
简单解决方案:
及
不,你不明白我的意思。我想要创建我自己的菜单,并想要这样的写入方法:public void setItemsFromResource(int menuResourceId){…},用于从标准菜单资源XML解析菜单。我通过自己的XML格式编写了这个功能,但我想解析标准的XML菜单资源格式:)从中获取图标的可绘制对象,从资源中获取字符串,等等。请查看android如何操作的源代码。。。这应该是正确的答案。它使用支持库为API7+工作v4@Iree,这个问题没有正确的答案,因为Android不支持它。这只是一种解决方法MenuBuilder构造函数只能从同一个库组(groupId=com.android.support)中调用
private 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){
MyLog.GetMyLog().e(e);
}
return null;
}
Menu menu = new MenuBuilder(context);
new MenuInflater(context).inflate(R.menu.my_menu, menu);
MenuItem item = menu.getItem(position)