Como usar uma variavel dentro do commandAction?

7 respostas
Gizelma

[color=“darkblue”]Criei um vetor no meu midlet, junto a declaração dos componentes do meu midlet, porem preciso acessa-lo dentro do commandAction, só que não reconhece a variavél, já tentei ate fazer um metodo para acessa-la porem ainda assim ele não reconhece, por que isso acontece? e como fazer para contornar essa situação?[/color]
:roll: [/img]

7 Respostas

dsiviotti

Tente fazer :

NomeDaClasse.variavel
urubatan

pode postar parte do código para ajudar?

um chute inicial e que vc declarou esta variavel dentro de um metodo, e o teu commandaction é uma inner class, então ela só tem acesso as variaveis da classe externa, e não dos metodos :smiley:

Gizelma

O codigo é o seguinte e a variavel problematica está em vermelho

import javax.microedition.midlet.;
import javax.microedition.lcdui.
;

/**

  • @author gcunha-syn

  • @version 1.0
    */
    public class TestFormMIDlet extends MIDlet implements CommandListener {

    private Command sair, CmdLogin, enviar, confirm, entrar, cmdLidas, cmdPend;
    
    private Display tela;
    
    private TextField nome, senha, cliente, medidor, leitura;
    
    private StringItem resultMsg;
    
    private Form login, introd, colet, FrConfirm, FrTotLec;
    
    private StringItem medid, cli, leitu, totLida, totPend, totGeral;
    

    public TestFormMIDlet() {

[color=“red”]        String Vcli[] = {“195670”,“195671”,“195672”,“195673”,“195674”,“195675”,“195676”,“195677”,“195678”,“195679”};[/color]

sair = new Command(“Sair”, Command.EXIT, 0);

CmdLogin = new Command(“Login”, Command.SCREEN, 1);

enviar = new Command(“Enviar”, Command.SCREEN, 1);

confirm = new Command(“Confirmar”, Command.SCREEN, 1);

entrar = new Command(“Entrar”, Command.SCREEN, 1);

cmdPend =  new Command(“Pendentes”, Command.SCREEN, 1);
colet = new Form("Colet");
    FrConfirm = new Form("Confirma");
    introd = new Form("Entrada");
    login = new Form("Login");
    FrTotLec = new Form("Total");
    
    nome = new TextField("Nome:" ,"" ,20 ,TextField.ANY);
    senha = new TextField("Senha", "", 10, TextField.ANY | TextField.PASSWORD);

    introd.setTitle("Synapsis Soluções em TI");
    introd.addCommand(sair);
    introd.addCommand(CmdLogin);
    introd.setCommandListener(this);
  
    login.append(nome);
    login.append(senha);
    login.addCommand(sair);
    login.addCommand(entrar);
    login.setCommandListener(this);
    
}


public void startApp() {
    tela = Display.getDisplay(this);
    tela.setCurrent(introd);
    //tela.numColors()
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
    if (c == sair) {
        notifyDestroyed();
        destroyApp(true);
    }
          
    if (c == CmdLogin){
        tela.setCurrent(login);
    }
    
    if (c == confirm ){
        cliente.setString("");
        medidor.setString("");
        leitura.setString("");
        tela.setCurrent(colet);
    }
    
    if (c == enviar){
        cli = new StringItem("Cliente:  ", cliente.getString());
        medid = new StringItem("Medidor:  ", medidor.getString());
        leitu = new StringItem("Leitura:  ", leitura.getString());
        FrConfirm.append(cli);
        FrConfirm.append(medid);
        FrConfirm.append(leitu);
        FrConfirm.addCommand(sair);
        FrConfirm.addCommand(confirm);
        FrConfirm.setCommandListener(this);
        tela.setCurrent(FrConfirm);
    }
    
    if (c == entrar){
        /*cliente = new TextField("Cliente:" ,"" ,8 ,TextField.NUMERIC);
        medidor = new TextField("Medidor:" ,"" ,8 ,TextField.NUMERIC);
        leitura = new TextField("Leitura:" ,"" ,20 ,TextField.NUMERIC);
        colet.append(cliente);
        colet.append(medidor);
        colet.append(leitura);
        colet.addCommand(sair);
        colet.addCommand(enviar);
        colet.setCommandListener(this);
        tela.setCurrent(colet);*/
        
        totLida = new StringItem("Lidas: ", "3");
        totPend = new StringItem("Pendentes:", "7");
        totGeral = new StringItem("Total:",[color="red"] vCli[0].getValue() [/color]);
        FrTotLec.append(totLida);          
        FrTotLec.append(totPend);
        FrTotLec.append(totGeral);
        FrTotLec.addCommand(sair);
        FrTotLec.addCommand(cmdPend);
        FrTotLec.setCommandListener(this);
        tela.setCurrent(FrTotLec);
}

}
}

urubatan

java é case sensitive
tu declarou a variavel como Vcli e quer acessar uma outra variavel com o nome de vCli :smiley:

era só problema de digitação :smiley:

Gizelma

é poque eu tentei acessar varias vezes, mas mesmo correto não funciona, nem colocando o nome do midlet na frente…
Eu consigo acessar os complonentes, porem se for uma variavel noral não, porque isso?

urubatan

ahh, e mais uma coisa que vi agora (nao tinha prestado atenção)
tu ta declarando a variavel dentro do custrutor da classe e tentando acessar ela dentro de outro metodo, assim não vai rolar nunca, pois ela só existe dentro do escopo do construtor.

jcranky

Por favor use as tags [code*] (sem o asterisco) quando postar códigos. Eles ficam mais legíveis :wink:

Você pode editar a sua mensagem e resolve isso :smiley: :smiley:

Criado 13 de outubro de 2004
Ultima resposta 13 de out. de 2004
Respostas 7
Participantes 4