[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]
Como usar uma variavel dentro do commandAction?
7 Respostas
Tente fazer :
NomeDaClasse.variavel
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 
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);
}
}
}
java é case sensitive
tu declarou a variavel como Vcli e quer acessar uma outra variavel com o nome de vCli 
era só problema de digitação 
é 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?
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.
Por favor use as tags [code*] (sem o asterisco) quando postar códigos. Eles ficam mais legíveis 
Você pode editar a sua mensagem e resolve isso
