Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Reply
Regular Contributor
Posts: 83
Registered: ‎05-24-2011
My Device: Storm 9550
My Carrier: XXX

splash screen not getting pushed

Hi all,

 

I am trying to create a splash screen that run while my app makes an http request. The splash is not getting pushed in the pleaseShowandWait method, and is causing an illegal argument exception later when I try to pop that screen. Here is my code...any ideas?

 

package net.creative.core;

import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Characters;
import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.Field;
import java.lang.Throwable;
import java.lang.RuntimeException;
import java.util.Timer;
import java.util.TimerTask;

public class SplashScreen extends MainScreen {

    //statics ------------------------------------------------------------------

    private static final Bitmap pic = Bitmap.getBitmapResource("Default@2x.png");
    private BitmapField picfield = new BitmapField(pic, Field.FIELD_HCENTER);
    

    private SplashScreen() {
        super();
        this.add(picfield);
    }

    public static void showScreenAndWait(final Runnable runThis) {
    	System.out.println("_________________ in the showScreenAndWait");
        final SplashScreen thisScreen = new SplashScreen();
        Thread threadToRun = new Thread() {
            public void run() {
                // First, display this screen

               UiApplication.getUiApplication().invokeLater(new Runnable() {
                   public void run() {
                	   UiApplication.getUiApplication().pushScreen(thisScreen);
                       System.out.println("-------the screen was just pushed");
                	   
                        
                  }
                });
                // Now run the code that must be executed in the Background
             //  UiApplication.getUiApplication().invokeLater(runThis);
               try {
                   runThis.run();
                   System.out.println("------the thread is running");
               } catch (Throwable t) {
                   t.printStackTrace();
                   throw new RuntimeException("Exception detected while waiting: " + t.toString());
               }
                // Now dismiss this screen
                UiApplication.getUiApplication().invokeLater(new Runnable() {
                   public void run() {
                        UiApplication.getUiApplication().popScreen(thisScreen);
                        System.out.println("-----the screen was just popped");
                    }
                });
            }
        };
        threadToRun.start();
    }

}

 

Highlighted
Developer
Posts: 285
Registered: ‎08-06-2010
My Device: Z10

Re: splash screen not getting pushed

A better way to implement a splash screen is to have the splash screen be the initial screen that the app loads, have it start the http request and listen to the http request. Once the http request finishes, have it notify the listener and then push the following screen on to the stack. 



Follow me on twitter @RileyGB - https://twitter.com/RileyGB
View my BB10 OpenSource projects - https://github.com/RileyGB/BlackBerry10-Samples