Blackberry-打开邮件时使用ApplicationMenuItem

Blackberry-打开邮件时使用ApplicationMenuItem,blackberry,blackberry-jde,Blackberry,Blackberry Jde,当从应用程序消息文件夹打开消息时,我希望有一个侦听器。为此,我使用ApplicationMenuItem,但在注册它之后,消息无法再打开 ApplicationMessageFolderRegistry messagefolderRegistry = ApplicationMessageFolderRegistry.getInstance(); messaageMenuItemListener = new CVSMessaageMenuItemListener();

当从应用程序消息文件夹打开消息时,我希望有一个侦听器。为此,我使用ApplicationMenuItem,但在注册它之后,消息无法再打开

ApplicationMessageFolderRegistry messagefolderRegistry = ApplicationMessageFolderRegistry.getInstance();
        messaageMenuItemListener = new CVSMessaageMenuItemListener();
        CVSApplicationMenuItem menuItem = new CVSApplicationMenuItem();
        menuItem.registerMenuItemListener(messaageMenuItemListener);        
        messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, new ApplicationMenuItem[]{menuItem});
        messagefolderRegistry.registerMessageIcon(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, alarmsIcon);
和菜单项:

public class CVSApplicationMenuItem extends ApplicationMenuItem {

    private CVSVector listeners;

    CVSApplicationMenuItem(){
        super(20);
    }

    public Object run(Object context) {
        if(!(context instanceof CVSApplicationMessage))
            return context;

        CVSApplicationMessage applicationMessage = (CVSApplicationMessage)context;
        if(listeners == null)
            return context;

        for (int i = 0; i < listeners.size(); i++) {
            ((ICVSApplicationMessageMenuItemListener)listeners.itemAt(i)).messageReaded(applicationMessage);
        }
        return context;
    }

    public void registerMenuItemListener(ICVSApplicationMessageMenuItemListener l){
        if(listeners == null)
            listeners = new CVSVector();

        if(l != null)
            listeners.addItem(l);
    }

    public String toString() {
        return null;
    }

}

据我所知,您不再看到系统“消息预览”屏幕。我也有同样的问题。似乎当您注册菜单项时,它会完全覆盖打开操作。我检查发现它们在ApplicationMenuItem的run()方法中打开了自定义预览消息屏幕。由于我没有找到任何方法打开带有我的消息的系统“消息预览”屏幕,我还将实现自定义屏幕。

您能否检查运行代码中是否没有异常发生。我甚至会说,使用侦听器是错误的,因为每当您注册菜单项时,它都会在消息应用程序的上下文中运行,而不会遇到异常。当我的应用程序抛出的消息被打开时,你有没有其他建议可以用来查找?对不起,我没有更多建议。请在bb开发论坛上询问您的分享。我看到他们从run方法打开了定制屏幕,直到现在这看起来是唯一的方法。我将制作一个屏幕来绘制自定义消息。我也没有办法调用“消息预览”应用程序、屏幕等。谢谢。
//messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, new ApplicationMenuItem[]{menuItem});