Как отобразить экран загрузки в Blackberry - PullRequest
1 голос
/ 19 декабря 2011

У меня проблема с Blackberry.

        // Stream connection
        streamConnection = (StreamConnection) Connector
                .open(_url);
        // Document Builder Factory
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        docBuilder.isValidating();
        // Parsing inputStream
        doc = docBuilder.parse(streamConnection.openInputStream());
        doc.getDocumentElement().normalize();
        NodeList list = doc.getElementsByTagName("*");

Я хочу отображать диалог загрузки до тех пор, пока не будет завершен анализатор задач. Потому что после завершения XML-парсера задачи мне нужно использовать его для отображения на экране.

Итак, как отобразить диалоговое окно загрузки до тех пор, пока Parser XML не будет завершен? Пожалуйста, помогите мне ! Спасибо большое !!!!!!!!!!!!!!!!!

Ответы [ 3 ]

2 голосов
/ 19 декабря 2011

привет, это довольно простая задача

Следующая ссылка перенаправит вас, как реализовать Пожалуйста, подождите экран http://supportforums.blackberry.com/t5/Java-Development/Sample-quot-Please-Wait-quot-screen-part-1/ta-p/493808 скачать этот ZIP-файл

Затем добавьте небольшую логику в ваше приложение, перенесите всю вашу концепцию синтаксического анализа в поток

например, я беру демонстрационный пример парсера xml и буду конвертировать в соответствии с нашим требованием

private class Connection extends Thread{
        Vector nodes_vect=new Vector();
        Vector elements_vect=new Vector();
        public Connection(){
            super();
        }

        public void run(){
            // define variables later used for parsing
            Document doc;
            StreamConnection conn;

            try{
                //providing the location of the XML file,
                //your address might be different
                conn=(StreamConnection)Connector.open
                  ("http://localhost:8000/content/test.xml;deviceside=true");//  http://localhost:8000/content/test.xml
                //next few lines creates variables to open a
                //stream, parse it, collect XML data and
                //extract the data which is required.
                //In this case they are elements,
                //node and the values of an element
                DocumentBuilderFactory docBuilderFactory
                  = DocumentBuilderFactory. newInstance(); 
                DocumentBuilder docBuilder
                  = docBuilderFactory.newDocumentBuilder();
                docBuilder.isValidating();
                doc = docBuilder.parse(conn.openInputStream());
                doc.getDocumentElement ().normalize ();
                NodeList list=doc.getElementsByTagName("*");
                _node=new String();
                _element = new String();
                //this "for" loop is used to parse through the
                //XML document and extract all elements and their
                //value, so they can be displayed on the device

                for (int i=0;i<list.getLength();i++){
                    Node value=list.item(i).
                      getChildNodes().item(0);
                    _node=list.item(i).getNodeName();
                    _element=value.getNodeValue();
                  nodes_vect.addElement(_node);
                  elements_vect.addElement(_element);
                   if(i==list.getLength()-1){


                       pushingToNextScreen(nodes_vect, elements_vect);//after last element it will 
                   }
                }//end for
            }//end try
            //will catch any exception thrown by the XML parser
            catch (Exception e){
                System.out.println(e.toString());
            }
        }//end connection function
    }// end connection class
}//end XML_Parsing_Sample

Вы можете позвонить из любого места

import java.util.Vector;

import javax.microedition.io.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;
import net.rim.device.api.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

class XML_Parsing_Sample extends UiApplication{
    //creating a member variable for the MainScreen
    MainScreen _screen= new MainScreen();
    //string variables to store the values of the XML document
    String _node,_element;
    Connection _connectionthread;

    public static void main(String arg[]){
        XML_Parsing_Sample application = new XML_Parsing_Sample();
        //create a new instance of the application
        //and start the application on the event thread
        application.enterEventDispatcher();
    }

    public XML_Parsing_Sample() {

        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                UiApplication.getUiApplication().pushScreen(new LoadingScreen());
            }
        });


       // pushScreen(_screen); // creating a screen
        //creating a connection thread to run in the background
        _connectionthread = new Connection();
        _connectionthread.start();//starting the thread operation
    }

    public void pushingToNextScreen(final Vector node,final Vector elem){
        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                 UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
                 UiApplication.getUiApplication().pushScreen(new datascreen(node, elem));//after last element it will call mainscreen constructer
            }
        });
    }

  class datascreen extends MainScreen
  {
      public datascreen(Vector node,Vector elem) {
        //you can write your logic and design with data(vectors contain all data)
    }
  }
0 голосов
/ 19 декабря 2011

найти приложение (PleaseWait.zip) по ссылке ниже, чтобы показать, пожалуйста, подождите.

http://supportforums.blackberry.com/t5/Java-Development/problem-in-gaugfield-show-urgent/td-p/964925

0 голосов
/ 19 декабря 2011

Поместите экземпляр Screen (PopupScreen) в стек отображения перед началом обработки модуля «XML-анализ» и по завершении удалите этот экран из стека отображения. Возможно, вам придется переопределить некоторые события нажатия клавиши на этом экране, которые удовлетворяют вашей потребности, например, ничего не делать при нажатии кнопки назад. И добавьте свой диалог настройки текста / анимации на этом экране.

...