J2ME - Problemas em abrir forms no cel

2 respostas
guihgf_10

Boa Noite a todos.

Ufa, finalemte terminei a minha aplicação móvel para o tcc, no pc ela roda tranquilamente no emulador e assim foi na apresentação, porém em um dos meus cel(Motorola V9) encontrei um problema sério. A aplicação passa por um login e entra em um menu principal, esse menu foi feito em canvas e possui icones, ao clicar no icone era para ele abrir uma lista, ou dependendo do icone ele abre um form. O problema é que loga normalmente, abre o menu, mas ao clicar no icone não abre os demais forms e nem emite uma mensagem de erro. É uma aplicação cliente que acessa um servidora(Servlets).

Abaixo a Classe de Conexão, Menu e um Form de exemplo:

package Conexao;


import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Guii
 */
public class Conexao extends Thread
{
    HttpConnection http=null;
    DataOutputStream os=null;
    DataInputStream is=null;
    String url;

    public Conexao()
    {

    }
    public HttpConnection run(String url)
    {
               this.url=url;
               System.out.println(url);
                //Cria conexão http na url informada
                try
                {
                    http = (HttpConnection) Connector.open(url);
                    http.setRequestMethod(HttpConnection.POST);//envia método do pedido : POST ou GET
                    http.setRequestProperty("User-Agent","Profile/MIDP-1.0, Configuration/CLDC-1.0");//Informação de cabeçalho a ser enviado
                    http.setRequestProperty("Content-Language","en-US");

                }
                catch (IOException ex)
                {
                    ex.printStackTrace();
                }
                return http;
     }
     public DataOutputStream Output() throws IOException
     {
       os =(DataOutputStream)http.openDataOutputStream();
       return os;
     }
     public DataInputStream Input() throws IOException
     {
       is =(DataInputStream)http.openDataInputStream();
       return is;
     }
     public void Close() throws IOException
     {
         http.close();
     }
}

Menu

package Forms;



import Mlearning.Mlearning;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Vector;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Ticker;

public class MenuCanvas extends Canvas implements CommandListener
{
	private	Command detalheCommand = new Command("Detalhe", Command.SCREEN, 1);
	private	Mlearning midlet;
	private Display display;
	private int x, y;
	private Vector opcoesVector;
	private int widthIcon, heightIcon;
	private int margemMenu, margemQuadrante, numQuadX, numLinhasTela, numLinhas, linhaScroll;
        private Ticker user;
        String username;
        String usuario;

        

	public MenuCanvas(Mlearning midlet, Display display, String username, String usuario) throws IOException
	{
               this.usuario=usuario;
		this.midlet = midlet;
		this.display = display;
                this.username=username;
                user=new Ticker(this.username);
                this.setTicker(user);
		this.addCommand(detalheCommand);
		this.setCommandListener(this);


		/*
		 Só mecher nas variaveis WidthIcon, HeightIcon, MargemQuadrante
		 O restante é calculado, inclusive com base nessas 3 variáveis
		*/
		
                //Tamanho do icone em pixel. Todos devem ter as mesmas dimensões.
		this.widthIcon = 50;
		this.heightIcon = 50;

		//Margem para o icone não ficar colado
		this.margemQuadrante = 2;

		/*
		 Abaixo são os calculos de ajustagem dos icones na tela
		 */

		//Posicionando no inicio do menu
		this.x = this.y = 0;

		//Quantidade de quadrantes por linha
		this.numQuadX = this.getWidth()/(this.widthIcon+(2*this.margemQuadrante));

		//Numero de linhas por tela
		this.numLinhasTela = this.getHeight()/(this.heightIcon+(2*this.margemQuadrante));

		//Margem do menu, pra tentar centralizar o menu horizontalmente
		this.margemMenu = (this.getWidth() - this.numQuadX*(this.widthIcon + (2*this.margemQuadrante)))/2;

		//Iniciando vetor com as opções
		this.carregaOpcoes();

		//Número de linhas
		if ( this.opcoesVector.size() % this.numQuadX == 0)
			this.numLinhas = this.opcoesVector.size()/this.numQuadX;
		else
			this.numLinhas = (this.opcoesVector.size()/this.numQuadX)+1;

		//Número de linhas de scroll, para visualizar opções além da tela
		this.linhaScroll = 0;
	}

	/*
	 Criação dos hashtables, onde cada um dele é respectivo a uma opção do menu
	 */

	protected void carregaOpcoes()
	{
		this.opcoesVector = new Vector();
		Hashtable opcaoTable;
                 /*
	
		 * Cada hashtable guarda as informações de uma opção:
		 *    item: O nome do item, irá aparecer na parte superior do canvas.
		 *    imagem: Caminho do arquivo a ser carregado como imagem do menu
		 *    descricao: Alguma informação a mais sobre a opção, é exibido quando o usuário seleciona o comando "Detalhes".
		 */
		try {
			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Cadastre-se em um curso");
			opcaoTable.put("imagem", Image.createImage("/Curso.png"));
			opcaoTable.put("descricao", "Curso");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Quiz");
			opcaoTable.put("imagem", Image.createImage("/Materiais.png"));
			opcaoTable.put("descricao", "Quiz");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Conteudo");
			opcaoTable.put("imagem", Image.createImage("/Atividades.png"));
			opcaoTable.put("descricao", "Exercicios");
			opcoesVector.addElement(opcaoTable);

                        opcaoTable = new Hashtable();
			opcaoTable.put("item", "Notas");
			opcaoTable.put("imagem", Image.createImage("/Notas.png"));
			opcaoTable.put("descricao", "Notas");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Colaboracao");
			opcaoTable.put("imagem", Image.createImage("/mensageiro.png"));
			opcaoTable.put("descricao", "Colaboracao");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Ajuda");
			opcaoTable.put("imagem", Image.createImage("/Ajuda.png"));
			opcaoTable.put("descricao", "Ajuda");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Alterar Senha");
			opcaoTable.put("imagem", Image.createImage("/Configuracao.png"));
			opcaoTable.put("descricao", "Alterar Senha");
			opcoesVector.addElement(opcaoTable);

			opcaoTable = new Hashtable();
			opcaoTable.put("item", "Sair");
			opcaoTable.put("imagem", Image.createImage("/Sair.png"));
			opcaoTable.put("descricao", "Sair");
			opcoesVector.addElement(opcaoTable);

		} catch (Exception e) {}
	}

	protected void paint(Graphics g)
	{
		//Colocando fundo branco na tela
		g.setColor(255, 255, 255);
		g.fillRect(0, 0, getWidth(), getHeight());

		//Definindo o título a ser exibido no aplicativo
		this.setTitle((String)((Hashtable)opcoesVector.elementAt((this.numQuadX*this.y)+ this.x)).get("item"));

		//Desenhando quadrado que indica o item selecionado até o momento
		g.setColor(35, 118, 225); //um certo tom de azul

		g.fillRect((this.x*(this.widthIcon+(2*this.margemQuadrante)))+this.margemMenu,
				   (this.y-this.linhaScroll)*(this.heightIcon+(2*this.margemQuadrante)),
				   this.widthIcon+(this.margemQuadrante*2),
				   this.heightIcon+(this.margemQuadrante*2));

		//Colocando os icones na tela
		for ( int indiceY = 0; indiceY < this.numLinhas; indiceY++) {
			//Se tiver scroll, não desenha a quantidade especifica
			if ( indiceY < (this.linhaScroll-1) )
				continue;
			for ( int indiceX = 0; indiceX < this.numQuadX; indiceX++) {
				//Condição de parada para a quantidade de icones
				if ((this.numQuadX*indiceY)+ indiceX >= this.opcoesVector.size())
					break;

				//Desenhando o icone
				g.drawImage((Image)((Hashtable)opcoesVector.elementAt((this.numQuadX*indiceY)+ indiceX)).get("imagem"),
							((indiceX*(this.widthIcon+(2*this.margemQuadrante)))+this.margemQuadrante)+this.margemMenu,
							((indiceY-linhaScroll)*(this.heightIcon+(2*this.margemQuadrante)))+this.margemQuadrante,
							Graphics.TOP | Graphics.LEFT);
			}
		}
	}

	protected void keyPressed(int keyCode)
	{
		switch (getGameAction(keyCode)) {
			case Canvas.DOWN:
				if ( ++y >= this.numLinhas || (this.numQuadX*this.y)+ this.x >= this.opcoesVector.size() )
					//Chegou ao final, volta para a primeira linha e zera scroll
					this.linhaScroll = this.y = 0;

				if ( (this.y - this.linhaScroll) >= this.numLinhasTela )
					//Passou a quantidade de linhas por tela, incrementa scroll
					this.linhaScroll++;
				break;
			case Canvas.UP:
				if ( --y < 0 ) {
					//Posicionando na ultima linha
					y = this.numLinhas - 1;

					//Verificando se na ultima linha, na coluna X existe opcao
					if ( (this.numQuadX*this.y)+ this.x >= this.opcoesVector.size()) {
						//Não existe opcao, voltando uma linha pra cima então
						this.y--;

						//Verificando a necessidade de scroll
						if ( (this.y - this.linhaScroll) >= this.numLinhasTela )
							this.linhaScroll++;
					}
					else if ( this.y >= this.numLinhasTela ) {
						//Atribuindo o scroll para a ultima linha
						this.linhaScroll = this.numLinhas - this.numLinhasTela;
					}
				} else if( this.linhaScroll > 0)
					//Subindo de linha, diminuindo o scroll
					this.linhaScroll--;
				break;
			case Canvas.RIGHT:
				if ( ++x >= this.numQuadX ) {
					//passou do ultimo icone da linha, zera o x
					x = 0;

					//Se passar da ultima linha e ultimo icone, volta para 0x0
					if (++y >= this.numLinhas)
						this.linhaScroll = this.y = 0;

					//Passou da quantidade de linhas da tela, aumenta scroll
					else if ( (this.y - this.linhaScroll) >= this.numLinhasTela )
						this.linhaScroll++;

				//Se tiver no ultimo elemento do menu, retorna para 0x0
				}else if ((this.numQuadX*this.y) + this.x >= this.opcoesVector.size())
					this.x = this.y = this.linhaScroll = 0;
				break;
			case Canvas.LEFT:
				if ( --x < 0 ) {
					//No primeiro, foi para a esquerda, direciona para o ultimo da linha
					this.x = this.numQuadX - 1;

					//Subindo de linha
					if ( --y < 0 ) {
						//Estava na primeira linha, posicionando na ultima
						this.y = this.numLinhas-1;

						if ( this.y >= this.numLinhasTela )
							//calculando scroll
							this.linhaScroll = this.numLinhas - this.numLinhasTela;
					}else if (this.linhaScroll > 0){
						//Subiu de linha, decrementa o scroll se existir
						this.linhaScroll--;
					}
					//posicionando o X de acordo com o ultimo icone da linha
					if ( (this.numQuadX*this.y) + this.x >= this.opcoesVector.size()) {
						do {
							this.x--;
						} while ((this.numQuadX*this.y) + this.x >= this.opcoesVector.size());
					}
				}
				break;
			case Canvas.FIRE:
        try {
            //Vai para o método que executa a ação da opção selecionada
            this.executarOpcao(x, y);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
				break;
		}

		repaint();
	}

	private void executarOpcao(int xOpcao, int yOpcao) throws IOException
	{
		/*
		 * Nesse método é tratado o que se deseja executar.
		 * Para encontrar a opção correspondente no vector, use a variável
		 * indiceOpcao, calculada abaixo:
		 * int indiceOpcao = (this.numQuadX*yOpcao)+ xOpcao;
		 */
                 String selecionado;
                 selecionado= (String)((Hashtable)opcoesVector.elementAt((this.numQuadX*this.y)+ this.x)).get("item");
                 
                 if (selecionado.equals("Cadastre-se em um curso"))
                 {
                     Curso curso = new Curso(this,this.usuario,midlet.getPorta());
                     display.setCurrent(curso.frmCurso);
                 }
                 else if(selecionado.equals("Conteudo"))
                 {
                     Conteudo conteudo=new Conteudo(this, this.usuario,this.display, midlet.getPorta(),"Menu");
                     //display.setCurrent(conteudo.lista);
                 }
                 else if(selecionado.equals("Sair"))
                 {
                     midlet.encerrarMIDlet();
                 }
                 else if(selecionado.equals("Quiz"))
                 {
                    Conteudo conteudo=new Conteudo(this, this.usuario,this.display, midlet.getPorta(),"Quiz");
                 }
                 else if(selecionado.equals("Colaboracao"))
                 {
                     Colaboracao c = new Colaboracao(this,this.usuario,midlet.getPorta());
                     
                 }
                 else if(selecionado.equals("Notas"))
                 {
                     Nota nota = new Nota(this, 0, usuario, 0, 0, midlet.getPorta());
                     Object aux=nota.ListaConteudo();

                 }
                 else if(selecionado.equals("Alterar Senha"))
                 {
                     Senha s= new Senha(this,midlet.getPorta(),this.usuario);

                 }
                 else if(selecionado.equals("Ajuda"))
                 {
                     Alert a = new Alert("");
                     a.setString("Para maiores informações sobre o funcionamento do Aplicativo consulte o nosso TCC no Capítulo Desenvolvimento.");
                     a.setTimeout(Alert.FOREVER);
                     display.setCurrent(a);
                 }
	}

	public void commandAction(Command command, Displayable displayable)
	{
		if ( command.equals(detalheCommand))
                {
			display.setCurrent(new Alert((String)((Hashtable)opcoesVector.elementAt((this.numQuadX*this.y)+ this.x)).get("item"),
									 (String)((Hashtable)opcoesVector.elementAt((this.numQuadX*this.y)+ this.x)).get("descricao"),
											 null,
										 AlertType.INFO), this);
		}
                else
                {
                     try {
				this.midlet.destroyApp(true);
                         }
			 catch (Exception e) {}
		}
	}
        public void Voltar()
        {
            midlet.getTela().setCurrent(this);
        }
        public Display Tela()
        {
            return display;
        }
   
}

Um dos Forms que o menu acessa:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Forms;

import Conexao.Conexao;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Vector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;

/**
 *
 * @author Guii
 */
public class Colaboracao extends Form implements CommandListener
{
    Conexao conn=new Conexao();
    MenuCanvas menu;
    String usuario,url,msg=null, val1=null, val2=null;;
    String porta;
    DataInputStream is=null;
    DataOutputStream os= null;
    List lista2=null;
    Vector v;
    Conteudo c;//= new Conteudo(menu, usuario, menu.Tela(), porta,"Colaboracao");
    Object aux,aux2;
    StringItem pergunta=null;
    Form frmpergunta=null,frmcriar=null;
    TextField txtresposta=null,txttitulo=null, txtpergunta=null;
    Command cmdresp=null, cmdvoltar=null, cmdcriar=null,cmdenviar=null, cmdresolvido=null;
    Date data = new Date();

    public Colaboracao(MenuCanvas menu, String usuario, String porta) throws IOException
    {
        super("Colaboracao");
        this.menu=menu;
        this.usuario=usuario;
        this.porta = porta;
        url = porta + "/MlearningServ/Colaboracao";
        lista2=new List("Discussões", List.IMPLICIT);
        frmpergunta= new Form("Ambiente Colaborativo");
        frmcriar= new Form("Pergunte ao seus colegas");
        frmcriar.setCommandListener(this);
        cmdresp=new Command("Responder", Command.OK, 1);
        cmdvoltar= new Command("Voltar",Command.BACK, 1);
        cmdcriar = new Command("Criar", Command.OK, 1);
        cmdenviar = new Command("Enviar", Command.OK, 1);
        cmdresolvido = new Command("Resolvido", Command.OK, 1);
        c= new Conteudo(menu, usuario, menu.Tela(), porta,"Colaboracao");
    }

    public void ListaDiscussoes(Object aux) throws IOException
    {
        lista2.deleteAll();
        this.aux=aux;
        menu.Tela().setCurrent(lista2);
        lista2.setCommandListener(this);
        conn.run(url);

        os=conn.Output();
        os.writeUTF("Lista Discussao");
        os.writeUTF(String.valueOf(this.aux));
        os.close();

        v=new Vector();
       
        is=conn.Input();

        String codigo,discussao;

        while(is.available()!=0)
        {
            v.addElement(is.readUTF());
            discussao=is.readUTF();
            lista2.append(discussao, null);
        }
        lista2.addCommand(cmdcriar);
        lista2.addCommand(cmdvoltar);
        is.close();
        conn.Close();
      
    }

    public void Pergunta() throws IOException
    {
        frmpergunta.deleteAll();

        int cmd;
        cmd=lista2.getSelectedIndex();
        aux2=v.elementAt(cmd);

        txtresposta=new TextField("", "", 200, TextField.ANY);

        conn.run(url);
        os=conn.Output();
        os.writeUTF("Pergunta");
        os.writeUTF(String.valueOf(aux2));
        os.close();

        is=conn.Input();
        String auxp=is.readUTF();

        pergunta=new StringItem(auxp, null);
        frmpergunta.append(pergunta);
        frmpergunta.append(txtresposta);
        frmpergunta.addCommand(cmdresp);
        frmpergunta.addCommand(cmdvoltar);
        frmpergunta.setCommandListener(this);
        menu.Tela().setCurrent(frmpergunta);
        is.close();
        conn.Close();
        ListaRespostas();
    }
    public void Resposta(String stat) throws IOException
    {
        frmpergunta.setCommandListener(this);
               
        String aux=usuario+" responde as "+data+ ": "+txtresposta.getString();

        StringItem StringItem = new StringItem(aux, null);
        frmpergunta.append(StringItem);
        menu.Tela().setCurrent(frmpergunta);

        conn.run(url);
        os=conn.Output();

        os.writeUTF("Enviar Resposta");
        os.writeUTF(String.valueOf(this.aux2));
        os.writeUTF(aux);
        os.writeUTF(usuario);
        os.writeUTF(stat);

        os.close();

        is=conn.Input();
        msg=is.readUTF();
        is.close();
        conn.Close();
        txtresposta.setString("");
        showAlert(msg);
    }
    public void ListaRespostas() throws IOException
    {
        conn.run(url);
        os=conn.Output();
        os.writeUTF("Carregar Respostas");
        os.writeUTF(String.valueOf(this.aux2));
        os.close();

        is=conn.Input();

        String lresp=null;

        v=new Vector();

        while (is.available()!=0)
        {
            lresp=is.readUTF();
            StringItem StringItem = new StringItem(lresp,null);
            //alteração para colocguiar o comando resolver
            frmpergunta.append(StringItem);
        }
        is.close();
        
        /*if(luser.equals(usuario))
        {
            frmpergunta.addCommand(cmdresolvido);
        }*/
        conn.Close();
        menu.Tela().setCurrent(frmpergunta);
        Resolver();
        
    }
    public void CriarDiscussao()
    {
        txttitulo= new TextField("Título","", 70,TextField.ANY);
        txtpergunta=new TextField("Pergunta","", 200, TextField.ANY);
        frmcriar.append(txttitulo);
        frmcriar.append(txtpergunta);
        frmcriar.addCommand(cmdvoltar);
        frmcriar.addCommand(cmdenviar);
        menu.Tela().setCurrent(frmcriar);
    }
    public void EnviarDiscussao() throws IOException
    {
        
        conn.run(url);
        os=conn.Output();

        os.writeUTF("Enviar Discussao");
        os.writeUTF(txttitulo.getString()+" -->Por: "+usuario);
        os.writeUTF(String.valueOf(this.aux));
        os.writeUTF(usuario+" pergunta: "+txtpergunta.getString());
        os.writeUTF(usuario);
        os.writeUTF("Aberto");
        System.out.println("aux"+String.valueOf(this.aux));
        os.close();

        is=conn.Input();
        msg=is.readUTF();
        System.out.println("A mensagem é:"+msg);
        is.close();
        conn.Close();
        
        lista2.deleteAll();
        ListaDiscussoes(this.aux);
        showAlert(msg);

    }
    public void Resolver() throws IOException
    {
        conn.run(url);
        os=conn.Output();
        os.writeUTF("Resolver");
        os.writeUTF(String.valueOf(this.aux2));
        os.close();

        is=conn.Input();

        String luser=null;
        String stat=null;

        v=new Vector();

        while (is.available()!=0)
        {
            luser=is.readUTF();
            stat=is.readUTF();
        }
        is.close();
        if(luser.equals(usuario)&&stat.equals("Aberto"))
        {
            frmpergunta.addCommand(cmdresolvido);
        }
        else if(luser.equals(usuario)&&stat.equals("Resolvido"))
        {
            frmpergunta.removeCommand(cmdresp);
        }
        conn.Close();

    }
    public void Resolvido() throws IOException
    {
        conn.run(url);
        os=conn.Output();
        os.writeUTF("Resolvido");
        os.writeUTF(String.valueOf(this.aux2));
        os.close();

        is=conn.Input();
        String msg1=is.readUTF();
        conn.Close();

        
        ListaDiscussoes(aux);
    

    }

    public void commandAction(Command c, Displayable d)
    {
       if(c==lista2.SELECT_COMMAND)
       {
            try {
                Pergunta();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
       else if(c==cmdresp)
       {
           val1=txtresposta.getString();
            try {
                if(val1.equals(""))
                {
                    showAlert("Digite o comentário!");
                }
                else
                    Resposta("Aberto");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
        else if(c==cmdcriar)
       {
            CriarDiscussao();
       }
       else if (c==cmdenviar)
       {
            val1=null;
            val2=null;
            val1=txttitulo.getString();
            val2=txtpergunta.getString();
            try {
                if(val1.equals("")&&val2.equals(""))
                    showAlert("Digite o título e a resposta");
                else if(val1.equals(""))
                    showAlert("Digite o título!");
                else if(val2.equals(""))
                    showAlert("Digite a sua pergunta");
                
                else
                    EnviarDiscussao();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
       else if((c==cmdvoltar)&&(d==frmpergunta))
       {
            try {
                frmpergunta.removeCommand(cmdresolvido);
                ListaDiscussoes(aux);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
       else if((c==cmdresolvido)&&(d==frmpergunta))
       {
            try {
                Resposta("Resolvido");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
       else if((c==cmdvoltar)&&(d==lista2))
       {
            try {
                Colaboracao co = new Colaboracao(menu, usuario, porta);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
       else if((c==cmdvoltar)&&(d==frmcriar))
       {
            try {
                ListaDiscussoes(aux);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
       }
    }
    public void showAlert(String msg)
    {
            Alert a = new Alert("");
            a.setString(msg);
            a.setTimeout(Alert.FOREVER);
            menu.Tela().setCurrent(a);
    }
}

O cel pessoal não tem wi-fi, eu cadastrei um dns no-ip para minha máquina, assim eu posso acessar por gsm no meu servidor, a aplicação loga normalmente, ou seja eu consegui comunicação com o servidor, o problema é no menu, tem hora que abre os outros forms(raramente), o código funcionou para o pc, mas não no cel. Outro problema que ocorre sempre mas no computador, é o problema de estourar limites do socket tcp ip, ele ocorre quando eu estou navegando na aplicação após um determinado periodo, a aplicação é mais ou menos grande, então eu abro e fecho conexão sempre, acredito que os dois problemas ocorrem devido a minha má implementação da conexão, então vim aqui dividi com o pessoal =D

Até mais.

2 Respostas

KamikazeBr

De fato é problema na sua implementação da Thread na Classe Conexão.java

De uma pesquisada sobre HttpConnection com Thread.

guihgf_10

Boa Noite amigo. Você teria um exemplo de qual maneira poderia ser implementada melhor a conexão ?

Criado 23 de janeiro de 2011
Ultima resposta 26 de jan. de 2011
Respostas 2
Participantes 2