Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Android菜单XML资源解析为对象列表_Android_Xml_Parsing_Resources_Menu - Fatal编程技术网

将Android菜单XML资源解析为对象列表

将Android菜单XML资源解析为对象列表,android,xml,parsing,resources,menu,Android,Xml,Parsing,Resources,Menu,我三天内无法解决这个问题。我有简单的XML菜单资源 我想在解析此XML后接收列表: 公共类菜单项{ 私有字符序列文本; 私有可绘制图像; 私有int-actionTag; //…能手和二传手。。。 } 对于菜单项的非标准操作,我需要此功能,但无法使用以下标准方法使用此资源: 。。。 MenuInflater充气机=getMenuInflater(); 充气机。充气(右菜单。一些菜单,菜单); ... 有人能帮我吗?谢谢。你可以很容易地 评论后更新: 获取资源ID和资源类型(图像、字符串、

我三天内无法解决这个问题。我有简单的XML菜单资源


我想在解析此XML后接收列表:

公共类菜单项{
私有字符序列文本;
私有可绘制图像;
私有int-actionTag;
//…能手和二传手。。。
}
对于菜单项的非标准操作,我需要此功能,但无法使用以下标准方法使用此资源:

。。。
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。一些菜单,菜单);
...
有人能帮我吗?谢谢。

你可以很容易地

评论后更新:

  • 获取资源ID和资源类型(图像、字符串、绘图表等)

  • 通过课堂。每种资源类型都有不同的访问方法

  • 这将有助于:

    ...
    
    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)