在Blackberry中使用MessageList

时间:2011-09-22 06:55:21

标签: blackberry java-me midlet

我尝试使用midlet在黑莓中执行 MessageList ,但无论我做什么,都会遇到一些问题。现在正在 NullPointerException 。这是代码

EncodedImage indicatorIcon = EncodedImage.getEncodedImageResource("img/indicator.png");
   ApplicationIcon applicationIcon = new ApplicationIcon(indicatorIcon);
   ApplicationIndicatorRegistry.getInstance().register(applicationIcon, false, false);

   ApplicationMessageFolderRegistry reg = ApplicationMessageFolderRegistry.getInstance();
   MessageListStore messageStore = MessageListStore.getInstance();
   if(reg.getApplicationFolder(INBOX_FOLDER_ID) == null)
   {
       ApplicationDescriptor daemonDescr = ApplicationDescriptor.currentApplicationDescriptor();
       String APPLICATION_NAME = "TestAPP";
       ApplicationDescriptor mainDescr = new ApplicationDescriptor(daemonDescr, APPLICATION_NAME, new String[] {});
       ApplicationFolderIntegrationConfig inboxIntegration = new ApplicationFolderIntegrationConfig(true, true, mainDescr);
       ApplicationFolderIntegrationConfig deletedIntegration = new ApplicationFolderIntegrationConfig(false);

       ApplicationMessageFolder inbox = reg.registerFolder(MyApp.INBOX_FOLDER_ID, "Inbox", messageStore.getInboxMessages(),
                       inboxIntegration);
       ApplicationMessageFolder deleted = reg.registerFolder(MyApp.DELETED_FOLDER_ID, "Deleted Messages", messageStore.getDeletedMessages(), deletedIntegration);
       messageStore.setFolders(inbox, deleted);
   }
   DemoMessage message = new DemoMessage();
   String name = "John";
   message.setSender(name);
   message.setSubject("Hello from " + name);
   message.setMessage("Hello Chris. This is " + name + ". How are you?  Hope to see you at the conference!");
   message.setReceivedTime(System.currentTimeMillis());
   messageStore.addInboxMessage(message);
   messageStore.getInboxFolder().fireElementAdded(message);

有人可以为midlet建议一个简单的 MessageList 示例,只需在中显示 字符串 MessageList 和自定义 ApplicationIndicator 值。如果可能,OnClick消息会从背景中恢复midlet。

1 个答案:

答案 0 :(得分:2)

使用以下代码:

    static class OpenContextMenu extends ApplicationMenuItem {
        public OpenContextMenu( int order ) {
            super( order );
        }

        public Object run( Object context ) {
            if( context instanceof NewMessage ) {
                try {
                    NewMessage message = (NewMessage) context;
                    if( message.isNew() ) {
                        message.markRead();
                        ApplicationMessageFolderRegistry reg = ApplicationMessageFolderRegistry.getInstance();
                        ApplicationMessageFolder folder = reg.getApplicationFolder( Mes

sageList.INBOX_FOLDER_ID );
                    folder.fireElementUpdated( message, message );
                    //changeIndicator(-1);
                }

                Inbox inbox = message.getInbox();
                Template template = inbox.getTemplate();

                //Launch the mainscreen
                UiApplication.getUiApplication().requestForeground();
            }
            catch (Exception ex) {
                Dialog.alert();
            }
        }
        return context;
    }

    public String toString() {
        return "Name of the menu item";
    }
}