Hi i have an alert screen that contains a guage that acts has a loading screen. i have this alert screen on a seperate thread class. The main canvas class creates a new object of that alert screen and does some process that while the main class does a process, the gauge gets updated by setting the values of the gauge.
The problem is that when i start the alert Thread, the screen doesnt display while i debug it and only displays it at the end of the main canva's process.
below is the code for the alert screen thread.
Code:public class load implements Runnable { /** Creates a new instance of load */ //possible states public static final int STATE_RUNNING = 0; public static final int STATE_STOP = 1; public int state; Thread t; public VideoPoker root; public Alert alert = new Alert ("Loading"); private int MAX = 10; private int INIT = 0; private Gauge load; public int VALUE = 0; public boolean begin = true; //VideoPoker is the root Midlet class public load(VideoPoker midlet) { this.root = midlet; load = new Gauge(null, false, MAX, INIT); alert.setIndicator(load); alert.setTimeout(alert.FOREVER); } public void start() { t = new Thread(); t.start(); } public void stop() { t = null; } public void run() { while(state != STATE_STOP) { try { load.setValue(VALUE); Display.getDisplay(root).setCurrent(alert); Thread.sleep(500); if(VALUE == MAX) { alert.setTimeout(2000); } } catch(Exception e) { } } } }
And here is the main class that calls it and does a login process.
Thanks for your helpCode://if user clicked on a command button called login do this.... if(c == Login) { //create a load screen object load load_screen = new load(root); //start Thread load_screen.state = load.STATE_RUNNING; new Thread(load_screen).start(); //store username and password load_screen.begin = false; p = log.passw(); //increment the gauge value by 2 load_screen.VALUE = load_screen.VALUE + 2; u = log.user(); boolean finish; load_screen.VALUE = load_screen.VALUE + 2; if((p.length() == 0) || (u.length() == 0) || p.trim().length()==0 || u.trim().length() == 0 ) { //gets the values from a textfile and checks if none of the values are blank //display error message Alert error = new Alert ("Error"); error.setString("Error, Please make sure both fields are not blank "); error.setTimeout (3000); Display.getDisplay(root).setCurrent(error); //sets the gauge to be completed load_screen.VALUE = 10; } else { //run garbage collector System.gc(); //increment the gauge value by 2 load_screen.VALUE = load_screen.VALUE + 2; line = root.login(u,p); load_screen.VALUE = load_screen.VALUE + 2; String bad = "BADLOGIN"; if(line.equals(bad)) { //sets the gauge to be completed load_screen.VALUE = 10; Alert in = new Alert ("Error"); in.setString("Username or password is invalid"); in.setTimeout (3000); Display.getDisplay(root).setCurrent(in, this); line = ""; line1 = ""; line2 = ""; load_screen.state = load.STATE_STOP; } else { //display error message //increment the gauge value by 2 load_screen.VALUE = load_screen.VALUE + 2; Alert in = new Alert ("Logged In"); in.setString("You have succesfuly logged into the system"); in.setTimeout (3000); Display.getDisplay(root).setCurrent(in, this); loggedIn = true; logged = "Log out"; //line = ""; line1 = ""; line2 = ""; //stop the load screen. load_screen.state = load.STATE_STOP; } }


Reply With Quote


Bookmarks