[RESOLVIDO] Ajuda com troca de telas [J2ME]

Olá gente, aprendi praticamente tudo que sei de J2ME na forma estruturada de código. Mas quero programar melhor e treinar mesmo a Orientação a Objetos nesta plataforma ME.

Mas o que tenho certas dúvidas é isso: Existe im Midlet (main) que consegue alterar o Display e mostrar as telas certo? pois bem quando fazem OO eu estava dividindo as telas, deixando o Midlet apenas para trocar telas e tenho uma classe(tela) com um TextField que faz uma consulta em um BD externo e passa para outra classe(tela) os valores que achou no BD e preenche mais TextFields com os dados.

Acontece que como as telas são inicializadas na execução do programa via construtor de cada uma, parece que a tela eh construída sem dado nenhum aí quando mando o Midlet mudar de tela pra esta resposta ela vem com os dados tudo em null.

Alguem sabe alguma forma pra eu montar o desing do software OO pra que essas coisas não aconteçam?

Não gostaria de fazer tudo numa única classe :frowning:

Obrigado.

Bom, não sei qual o problema com a inicialização de componentes textfield antes de atribuir à elas valores.
Para os textfields você possui o método setText(String arg); pelo qual você pode mudar o valor para “” ou para “Qualquer valor aqui”.

J2ME é uma versão mais light, ou seja, muitas coisas precisam ser suprimidas, então, quanto menos telas e componentes forem colocados, melhor. Assim sendo, você pode, antes de sair de uma tela (ou após) limpar os campos que ela possui, caso seja necessário abrir novamente, você insere os valores que precisar, sem ficar com lixo de memoria…

Cria uma Classe onde vc teria um objeto Display estático, ai no startApp de sua midlet, vc seta esse objeto com um Display. Daí é só usar o objeto display estático em outras classes, já que este é estático. Ficaria dessa forma:

no startApp:

protected void startApp(){     
     ClasseCriadaPorVc.varDisplay = Display.getDisplay(this);
     .
     .
     .
}

Daí vc usaria dessa fomar em outras classes:

   ClasseCriadaPorVc.varDisplay.setCurrent(suaView);

Essa pode ser umas das formas. Espero ter ajudado.

nao sei se entendi muito bem, talvez seja seu caso, mas quando estamos trabalhando com Item (TextField, ChoiceGroup, Gauge e etc…) Quando vc quiser processar eventos em um obj Item, basta registrar um “receptor” que receberá uma mensagem, quando o evento ocorrer. O destinatario dessa mensagem é o método itemStateChanged(). Com esse método, vc pode determinar qual obj Item mudou e decidir qual ação gostaria de executar.

public class MinhasTelas extends MIDlet implements CommandListener, ItemStateListener {

form.setItemStateListener(this); //recebe eventos

public void itemStateChanged(Item item){
if(item==textField){
textField.setString(BD.toString());

}
}
me corrige se to escrevendo bobagem flw!!!

Olá obrigado pela resposta e desculpe pela demora.

Fiz como o amigo aqui acima disse, usei no Midlet com métodos static final e bastava puxar em outras classes quando eu queria trocar de tela.