Fiz uma aplicação aqui e utilizei um choisegroup, que é montado a partir de um arquivo xml. No emulador ele funciona corretamente, mas quando passei pro Motorola W510, não apareceu correto… o que será que aconteceu???
Poste o codigo que voce fez e detalhe mais qual tipo de erro aconteceu, para que possamos ajuda-lo.
Voce testou em qual emulador? Lembre-se que cada celular renderiza a aplicação do seu proprio modo, podendo causar esses problemas mesmo
vamos lá! o código da aplicação é esse… quanto ao erro, ele exibe como se fosse um textfield, estranho, nem da pra explicar certinho… ainda vou testar em outros aparelhos pra ver
[code]
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.midlet.;
import javax.microedition.lcdui.;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
public class Eleicoes2008 extends MIDlet implements CommandListener{
Display display;
Form form1 = new Form("Eleiçoes 2008 - Prefeito"); //Formulário para escolha do prefeito
Form form2 = new Form("Eleições 2008 - Vereador"); //Formulário para escolha do vereador
Form form3 = new Form("Confirmar votação"); //Formulário de confirmação
//Cria os botões utilizados durante a aplicação
Command cmSair = new Command("Sair", Command.EXIT, 1);
Command cmVotar = new Command("Votar", Command.SCREEN, 2);
Command cmRetornar = new Command("Retornar", Command.EXIT, 1);
Command cmConfirmar = new Command("Confirmar", Command.SCREEN, 2);
private int choiceGroupIndex;
private StringItem siPrefeito;
private StringItem siVereador;
ChoiceGroup cgPrefeito; //Grupo de escolha
TextField tf; //Campo de texto
String votoPrefeito = "";
String votoVereador = "";
String url="127.0.0.1:8080";
InputStream in; //Guardará a Stream enviada pelo servidor
//Método que acessa o arquivo xml no servidor
protected void acessaXML() {
Thread t=new Thread (){
public void run() {
try {
//Abre a conexão
HttpConnection con = (HttpConnection)Connector.open("http://" + url + "/Eleicoes2008/votacao.xml");
in = con.openInputStream();
parser(in); //Chama o método que inicia a tradução do XML
} catch (IOException ex) {
ex.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();
}
//Faz outra conexão e envia os candidatos escolhidos
protected void enviaVoto() {
Thread t=new Thread() {
public void run() {
String situacao = "";
StringBuffer mensagem = new StringBuffer();
try
{
HttpConnection con = (HttpConnection)Connector.open("http://" + url + "/Eleicoes2008/Eleicoes2008?votoP=" + votoPrefeito + "&votoV=" + votoVereador);
int status = -1;
status = con.getResponseCode();
if (status == HttpConnection.HTTP_OK) {
InputStream is = con.openInputStream();
int lido = is.read();
lido = is.read();
lido = is.read();
while (lido != -1) {
byte b1 = (byte) lido;
mensagem.append( (char) b1);
lido = is.read();
}
situacao = mensagem.toString();
}
else {
situacao = "Erro na Conexão";
}
form3.append(situacao);
}
catch (IOException e) {
}
}
};
t.start();
form3.removeCommand(cmRetornar);
form3.removeCommand(cmConfirmar);
form3.addCommand(cmSair);
display.setCurrent(form3);
//form3.setCommandListener(this);
}
protected void startApp() throws MIDletStateChangeException{
acessaXML();
display = Display.getDisplay(this); //Referência ao objeto Display
//Seta os elementos do Form1 (Prefeito)
cgPrefeito = new ChoiceGroup("Escolha seu candidato a prefeito", Choice.EXCLUSIVE);
form1.append(cgPrefeito);
form1.addCommand(cmSair);
form1.addCommand(cmVotar);
form1.setCommandListener(this);
display.setCurrent(form1);
//Seta os elementos do Form2 (Vereador)
tf = new TextField("Digite o número do seu candidato a vereador: ", "", 10, TextField.ANY);
form2.append(tf);
form2.addCommand(cmRetornar);
form2.addCommand(cmVotar);
form2.setCommandListener(this);
//Seta os elementos do Form3 (Confirmação)
form3.addCommand(cmRetornar);
form3.addCommand(cmConfirmar);
form3.setCommandListener(this);
}
private void parser(InputStream in) throws Exception {
//inicia o xmlparser
KXmlParser parser = new KXmlParser();
parser.setInput(new InputStreamReader(in));
parser.nextTag();
//posiciona na primeira tag <votacao>
String tag_inicio = parser.getName();
System.out.println("Início: " + tag_inicio);
parser.require(XmlPullParser.START_TAG, null, tag_inicio);
//enquanto é diferente de end_tag
while (parser.nextTag() != XmlPullParser.END_TAG) {
//posiciona na tag <prefeito>
parser.require(XmlPullParser.START_TAG, null, "prefeito");
parserPrefeito(parser);
form1.append("\n");
parser.require(XmlPullParser.END_TAG, null, "prefeito");
}
parser.require(XmlPullParser.END_TAG, null, tag_inicio);
parser.next();
parser.require(XmlPullParser.END_DOCUMENT, null, null);
}
private void parserPrefeito(KXmlParser parser) throws Exception {
//enquanto é diferente de </prefeito>
while (parser.nextTag() != XmlPullParser.END_TAG) {
//posiciona em uma tag "start". ex: <nome>
parser.require(XmlPullParser.START_TAG, null, null);
String name = parser.getName();
String text = parser.nextText();
System.out.println("Tag: " + name + " -> " + text);
//adiciona como um item do menu
cgPrefeito.append(text, null);
//adiciona o texto no form
//form.append(text);
//posiciona no fim da tag </nome>
parser.require(XmlPullParser.END_TAG, null, name);
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
//Função que trata as ações dos botões da aplicação
public void commandAction(Command c, Displayable s) {
if (s == form1) {
if(c == cmSair) {
destroyApp(true);
notifyDestroyed();
}
else if (c == cmVotar) {
//se for confirmado o voto para prefeito, seta para a formulário do vereador
display.setCurrent(form2);
}
}
else if (s == form2) {
if (c == cmRetornar) {
display.setCurrent(form1); //retorna ao form1
}
else if (c == cmVotar) {
votoPrefeito = cgPrefeito.getString(cgPrefeito.getSelectedIndex()).replace(' ', '+');
votoVereador = tf.getString().replace(' ', '+');
siPrefeito = new StringItem("Prefeito: ", votoPrefeito);
siVereador = new StringItem("Vereador: ", votoVereador);
form3.append(siPrefeito);
form3.append(siVereador);
display.setCurrent(form3);
}
}
else if (s == form3) {
if (c == cmRetornar) {
//APAGAR O CONTEUDO DAS STRING_ITENS
display.setCurrent(form2);
}
else if (c == cmConfirmar) {
enviaVoto();
}
else if (c == cmSair) {
destroyApp(true);
notifyDestroyed();
}
}
}
}[/code]
ahh, e testei no emulador do Wireless Toolkit