Question

I have a Screen name DownloaderScreen when the screen start it will start download some file and when download is complete it will go forward to next screen autometically. I using the following code.

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

The code is working fine and starts download files and when download is completed it is going forward to next screen. But when there is no file to download phraseList array length is zero, it is not going forward. What is problem in my code?

Was it helpful?

Solution 2

The GuageField doesn't like going from 0 to 0. When the length is zero, don't add GuageField.

OTHER TIPS

Change the code to

 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.
        }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top