黑莓 - 打开邮件时使用ApplicationMenuItem的 [英] Blackberry - use of ApplicationMenuItem when opening a message

查看:115
本文介绍了黑莓 - 打开邮件时使用ApplicationMenuItem的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要当从应用程序的消息文件夹中打开一条消息,有一个听众。为此,我利用ApplicationMenuItem的,但注册后,该消息无法再打开。

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

和菜单项:

 公共类CVSApplicationMenuItem扩展ApplicationMenuItem {    私人CVSVector听众;    CVSApplicationMenuItem(){
        超级(20);
    }    公共对象运行(对象上下文){
        如果(!(上下文的instanceof CVSApplicationMessage))
            返回语境;        CVSApplicationMessage applicationMessage =(CVSApplicationMessage)范围内;
        如果(听众== NULL)
            返回语境;        的for(int i = 0; I< listeners.size();我++){
            ((ICVSApplicationMessageMenuItemListener)listeners.itemAt(I))messageReaded(applicationMessage)。
        }
        返回语境;
    }    公共无效registerMenuItemListener(ICVSApplicationMessageMenuItemListener L){
        如果(听众== NULL)
            听众=新CVSVector();        如果(L!= NULL)
            listeners.addItem(升);
    }    公共字符串的toString(){
        返回null;
    }}

我可以看到在消息列表(从家里通知图标打开)的消息,但不能打开它。如果我做下面的工作原理,但后来我有当消息它没有开回调:

  // messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS,ApplicationMessage.Status.UNOPENED,新ApplicationMenuItem [] {菜单项});


解决方案

据我所知,你没有看到系统的信息preVIEW画面了。我有同样的问题。似乎当您注册菜单项,它完全覆盖开启动作。我检查消息列表演示发现他们打开定制preVIEW消息屏幕ApplicationMenuItem的run()方法内。因为我没有找到任何办法打开系统的信息preVIEW屏幕,我的短信我要实现自定义屏幕也。

I want to have a listener when a message is opened from the application messages folder. For this I make use of ApplicationMenuItem, but after registering it, the message could not be opened anymore.

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

and the menuItem:

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

}

I can see the message in the messages list (opened from home notification icon), but cannot open it. If I do the following it works, but then I have no callback when the message it's opened:

//messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, new ApplicationMenuItem[]{menuItem});

解决方案

As I understand you don't see system "Message preview" screen any more. I have same problem. Seems when you register menu item it completely overrides open action. I checked Message List Demo and found that they open custom preview message screen inside ApplicationMenuItem's run() method. As I didn't found any way to open system "Message preview" screen with my message I'm going to implement custom screen also.

这篇关于黑莓 - 打开邮件时使用ApplicationMenuItem的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆