Olá…
Estou mechendo em J2ME, porém só consegui fazer um tipo de estrutura pra tratar os Command’s da vida…
Na minha classe principal (que herda de MIDLET) eu tenho as intancias de todas as “telas” da minha aplicacao… seja ela um form ou canvas como descrito abaixo:
public class LIBFIP extends MIDlet implements CommandListener {
private Display display = null;
private List mainLista = null;
private Form formConsulta = null;
private Form formResultadoConsulta = null;
private Form formEmprestimo = null;
private Form formResultadoEmprestimo = null;
private Ticker tckMain = null;
private Ticker tckFormConsulta = null;
private Ticker tckFormResultadoConsulta = null;
private Command cmdMainOk = null;
private Command cmdMainSair = null;
private Command cmdConsultaOk = null;
private Command cmdConsultaVoltar = null;
private Command cmdResultadoConsultaOk = null;
private Command cmdResultadoConsultaVoltar = null;
private Command cmdEmprestimoOk = null;
private Command cmdEmprestimoVoltar = null;
private Command cmdResultadoEmprestimoOk = null;
private Command cmdResultadoEmprestimoVoltar = null;
…
}
O único padrão que eu estou usando na aplicacao é o SINGLETON, para evitar o uso de muita memória caso eu saia e volte pra tela (Uso eles nos forms e Canvas…)
E, dando continuade a minha questão, eu estou controlando TODOS os eventos da minha aplicação nessa minha classe dessa forma:
public void commandAction(Command c, Displayable d) {
if (d == mainLista) {
if (c == cmdMainOk || c == List.SELECT_COMMAND) {
System.out.println("Principal -> " + MainList.opcoes[((List)d).getSelectedIndex()]);
switch (((List)d).getSelectedIndex()) {
case 0: {
criaTelaMain();
break;
}
…
}
E, finalmente, a minha implementação do método criaTelaXXXXX() (Sao todas iguais o modo de implementacao)
public void criaTelaMain() {
if (this.mainLista == null) {
this.mainLista = MainList.getInstance();
this.cmdMainOk = new Command(“OK”, Command.OK, 0);
this.cmdMainSair = new Command(“Sair”, Command.BACK, 1);
this.mainLista.addCommand(cmdMainOk);
this.mainLista.addCommand(cmdMainSair);
this.mainLista.setCommandListener(this);
this.tckMain = new Ticker(MainList.getDescricao());
this.mainLista.setTicker(this.tckMain);
}
setDisplay(this.mainLista);
}
Gostaria que alguem esclarecesse em 3 coisas:
- Sobre o meu uso de Singleton (em relacao a memória. se realmente está ocorrendo o que eu estou pensando…)
- Se é dessa forma em que vcs trabalham pra tratar os Command’s
- Só existe 1 classe que herda de Midlet ??? Eu nao posso chamar outro MIDLET pra outra “tela” minha ???
Eu estou desenvolvendo uma aplicacao J2ME MID 1.0 para o celular Nokia 3100.
Agradeço antecipadamente ajudas…
Atenciosamente, Pergentino.