Blackberry экран навигации - PullRequest
0 голосов
/ 30 марта 2012

У меня есть имя экрана DownloaderScreen , когда при запуске экрана начнется загрузка какого-либо файла, а после завершения загрузки он автоматически перейдет к следующему экрану. Я использовал следующий код.

public DownloaderScreen() {
        super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT
                | USE_ALL_WIDTH);

        this.application = UiApplication.getUiApplication();
        HorizontalFieldManager outerBlock = new HorizontalFieldManager(USE_ALL_HEIGHT);
        VerticalFieldManager innerBlock = new VerticalFieldManager(USE_ALL_WIDTH | FIELD_VCENTER);
        innerBlock.setPadding(0, 10, 0, 10);
        outerBlock.setBackground(BackgroundFactory
                .createBitmapBackground(LangValue.dlBgimg));
        outerBlock.add(innerBlock);
        add(outerBlock);

        phraseHelper = new PhraseHelper();
        final String[][] phraseList = phraseHelper.getDownloadList();

        gaugeField = new GaugeField("Downloading  ", 0, phraseList.length, 0, GaugeField.PERCENT); 
        innerBlock.add(gaugeField);

        Thread dlTread = new Thread() {
            public void run() {
                startDownload(phraseList);
            }
        };
        dlTread.start();

    }

private void startDownload(String[][] phraseList){

        if(phraseList.length!=0){

            for(int i=0; i < phraseList.length ; i++){//
               gaugeField.setValue(i);
               // code for download 
            }
        }
        goToNext();
    }

private void goToNext() {

final Screen currentScreen = application.getActiveScreen();  

    if (UiApplication.isEventDispatchThread()) {  
        application.popScreen(currentScreen);  
        application.pushScreen(new HomeScreen());  
        } else {  
            application.invokeLater(new Runnable() {  
                public void run() {  
                    application.popScreen(currentScreen);  
                    application.pushScreen(new HomeScreen());  
                }  
            });  
        }
}

Код работает нормально и начинает загрузку файлов, а после завершения загрузки он переходит к следующему экрану. Но когда нет файла для загрузки phraseList длина массива равна нулю, он не идет вперед. В чем проблема в моем коде?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

GuageField не любит переходить от 0 до 0. Когда длина равна нулю, не добавляйте GuageField.

1 голос
/ 30 марта 2012

Измените код на

 if(phraseList.length!=0){

        for(int i=0; i < phraseList.length ; i++){//
           gaugeField.setValue(i);
           // code for download 
        }
        goToNext(); 

    }
    else{
         goToNext(); //if nothing to download, then it will goto the next screen.
        }
...