Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Navegando entre telas em Java ME

From Wiki
Jump to: navigation, search

Introdução

Este trecho de código demonstra como navegar entre três diferentes instâncias da classe Screen. Screen é a superclasse para todas as classes de interface gráfica de usuário de alto nível, como Form e List.

Na prática, a navegação é realizada definindo o Displayable corrente para o Screen especificado:

private void switchCurrentScreen(Displayable displayable) {
Display.getDisplay(this).setCurrent(displayable);
}

Código fonte

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.midlet.MIDlet;
public class NavigationMIDlet extends MIDlet implements CommandListener {
private Form firstScreen;
private Form secondScreen;
private Form thirdScreen;
 
// Comandos de navegação
private static final Command NEXT_COMMAND =
new Command("Next", Command.SCREEN, 1);
private static final Command PREV_COMMAND =
new Command("Previous", Command.BACK, 1);
private static final Command EXIT_COMMAND =
new Command("Exit", Command.EXIT, 1);;
 
/**
* Construtor. Constrói o objeto e inicializa os objetos displayables.
*/

public NavigationMIDlet() {
// Initialize the screens
initFirstScreen();
initSecondScreen();
initThirdScreen();
}
 
private void initFirstScreen() {
firstScreen = new Form("First example screen");
StringItem item = new StringItem("Description",
"This is the first example screen.");
firstScreen.append(item);
firstScreen.addCommand(NEXT_COMMAND);
firstScreen.addCommand(EXIT_COMMAND);
firstScreen.setCommandListener(this);
}
 
private void initSecondScreen() {
secondScreen = new Form("Second example screen");
StringItem item = new StringItem("Description",
"This is the second example screen.");
secondScreen.append(item);
secondScreen.addCommand(NEXT_COMMAND);
secondScreen.addCommand(PREV_COMMAND);
secondScreen.setCommandListener(this);
}
 
private void initThirdScreen() {
thirdScreen = new Form("Third example screen");
StringItem item = new StringItem("Description",
"This is the third example screen.");
thirdScreen.append(item);
thirdScreen.addCommand(PREV_COMMAND);
thirdScreen.setCommandListener(this);
}
 
private void switchCurrentScreen(Displayable displayable) {
Display.getDisplay(this).setCurrent(displayable);
}
 
/**
* Método pertencente a MIDlet.
* Invocado quando a MIDlet é inicializada
*/

public void startApp() {
// A tela inicial é o primeiro componente de tela Form
switchCurrentScreen(firstScreen);
}
 
/**
* Método pertencente a MIDlet.
* Invocado pelo MIDlet para entrar no estado de Pause
*/

public void pauseApp() {
// Nenhuma implementação necessária
}
 
/**
* Método pertencente a MIDlet.
* Invocado quando a MIDlet é finalizada
* @param unconditional se a MIDlet pode ser finalizada
*/

public void destroyApp(boolean unconditional) {
// Nenhuma implementação necessária
}
 
/**
* Método da interface CommandListener.
* Invocado pelo sistema para indicar o disparo de um evento de um comando pertencente a um displayable em particular
* @param command referência a um objeto Command que foi invocado
* @param displayable referência ao displayable ao qual o objeto Command pertence
*/

public void commandAction(Command command, Displayable displayable) {
if (command == EXIT_COMMAND) {
// Sai da MIDlet
notifyDestroyed();
} else if (command == NEXT_COMMAND) {
if (displayable == firstScreen) {
switchCurrentScreen(secondScreen);
} else if (displayable == secondScreen) {
switchCurrentScreen(thirdScreen);
}
} else if (command == PREV_COMMAND) {
if (displayable == secondScreen) {
switchCurrentScreen(firstScreen);
} else if (displayable == thirdScreen) {
switchCurrentScreen(secondScreen);
}
}
}
}

É possível também exebir alertas (instâncias da classe Alert) antes de efetuar a troca das telas. Adicionaalmente, a troca pode ser feita apenas após o usuário ter descartado o alerta. A classe AlertType define o tipo do alerta e se a interação do usuário é necessária antes da tela ser alterada. (AlertType.CONFIRMATION). Para implementar a exibição de um alerta informativo (AlertType.INFO; não é necessária qualquer interação do usuário) antes de ser realizada a troca das telas. Adicione o trecho de código a seguir ao exemplo anterior:

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
private void switchCurrentScreen(Alert alert, Displayable displayable) {
Display.getDisplay(this).setCurrent(alert, displayable);
}
Alert alert = new Alert("Screen changing",
"Switching current screen in a moment...", null, AlertType.INFO);
switchCurrentScreen(alert, firstScreen);

Pós-condições

A MIDlet demonstra a navegação entre diferentes telas.

This page was last modified on 13 August 2013, at 06:00.
265 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×