Bom dia,
Ao carregar sobre um botão, depois de preenhido o campo ordem ele vai consultar a BD e registar os dados referentes à ordem.
Até aqui funciona perfeito, porém, quando vou carregar a 2ªvez, ou seja, fazer nova pesquisa, ele dá-me erro.
Eu creio que seja devido aos arrays, se bem que já os tentei limpar e não resolvo o problema.
Erro ao procurar a 2ªvez
Iniciado por
NunoDinis
, Nov 23 2012 10:51
7 respostas a este tópico
#1
Mensagem publicada 23 November 2012 - 10:51
#2
Mensagem publicada 23 November 2012 - 20:13
Boas, posta algum código para ver como estás a fazer.
Cumps
Driver
Cumps
Driver
#3
Mensagem publicada 24 November 2012 - 10:58
Aqui vai então.
Com esta função vou buscar através de um ficheiro PHP os valores (através de uma query).
Por exemplo, vou buscar o ac, referencia e a cor, que transporto assim : ValorAC#ValorRef#ValorCor#^ ( ex concreto : 152#234#vermelho#^) .
Depois separo a string e meto os valores num array, para depois os meter nas respetivas caixas de texto.
A primeira vez dá perfeitamente, a segunda dá-me erro. E indica para esta linha listaUsuariosSAP[posicaoSAP]=""+nomeSAP; .
public void DadosSAP() { String urlGetSAP="[url="http://192.168.206.110:82/android/SAP.php?ordem="]http://192.168.206.1...SAP.php?ordem="[/url] + etOrdem.getText().toString(); String respostaRetornadaSAP = null; try { respostaRetornadaSAP = ConexaoHttpClient.executaHttpGet(urlGetSAP); String respostaSAP = respostaRetornadaSAP.toString(); if(respostaSAP.contains("A ordem")) { Intent it = new Intent(Simple.this, Main.class); finish(); it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Simple.this.startActivity(it); Toast.makeText(this, "Não existe a ordem " + etOrdem.getText().toString() + " em SAP", Toast.LENGTH_LONG).show(); } else { char separadarorSAP='#'; int contaUsuariosSAP=0; for(int i=0;i<respostaSAP.length();i++) if(separadarorSAP == respostaSAP.charAt(i)) contaUsuariosSAP++; listaUsuariosSAP = new String[contaUsuariosSAP]; char caracter_lidoSAP=respostaSAP.charAt(0); String nomeSAP=""; for (int i=0;caracter_lidoSAP != '^';i++) { caracter_lidoSAP = respostaSAP.charAt(i); if (caracter_lidoSAP != '#') { nomeSAP+= (char) caracter_lidoSAP; //Log.i("NOME","NOME::" + nome); } else { listaUsuariosSAP[posicaoSAP]=""+nomeSAP; posicaoSAP++; //Log.i("NOME2","NOME2::" + nomeSAP); nomeSAP=""; etAc.setText(listaUsuariosSAP[0]); etCor.setText(listaUsuariosSAP[1]); listaUsuariosSAP[2]=""; etReferencia.setText(listaUsuariosSAP[3]); listaUsuariosSAP[4]=""; // } } } } catch(Exception erro) { Log.i("erro 1", "erro 1= "+erro); } }
Com esta função vou buscar através de um ficheiro PHP os valores (através de uma query).
Por exemplo, vou buscar o ac, referencia e a cor, que transporto assim : ValorAC#ValorRef#ValorCor#^ ( ex concreto : 152#234#vermelho#^) .
Depois separo a string e meto os valores num array, para depois os meter nas respetivas caixas de texto.
A primeira vez dá perfeitamente, a segunda dá-me erro. E indica para esta linha listaUsuariosSAP[posicaoSAP]=""+nomeSAP; .
Editado por NunoDinis, 24 November 2012 - 10:59.
#4
Mensagem publicada 25 November 2012 - 00:04
Aconselho-te a criares uma WebAPI REST no teu backend PHP por forma a teres suporte a JSON. O Android dá-te support out-of-the-box para JSON.
Isso creio que é simples de fazeres em PHP, depois no Android só tens que fazer new JSONObject(String jsonString); e navegas no objecto.
Fazer parsing de texto num dispositivo de recursos limitados não é aconselhável, uma vez que vais consumir muitos recursos.
Isso creio que é simples de fazeres em PHP, depois no Android só tens que fazer new JSONObject(String jsonString); e navegas no objecto.
Fazer parsing de texto num dispositivo de recursos limitados não é aconselhável, uma vez que vais consumir muitos recursos.
#5
Mensagem publicada 25 November 2012 - 11:50
Obrigado.
Podes-me dar um link ou um exemplo de como criar uma WebAPI REST no meu ficheiro PHP ? Como nunca fiz, não estou à vontade.
Podes-me dar um link ou um exemplo de como criar uma WebAPI REST no meu ficheiro PHP ? Como nunca fiz, não estou à vontade.
#6
Mensagem publicada 25 November 2012 - 20:28
Epa, procura pelo Google, já existem algumas frameworks que te facilitam a criação de WebAPI's, (ver http://blog.programm...eworks-for-php/ ). Contudo, isso é simples de fazer, basta devolveres a representação dos Recursos como application/json .
#7
Mensagem publicada 25 November 2012 - 21:14
E é mesmo a única forma que tenho que fazer?
Não há possibilidade de recriar os objetos para eles ficarem zerados ?
Não há possibilidade de recriar os objetos para eles ficarem zerados ?
#8
Mensagem publicada 26 November 2012 - 16:16
É assim, não é a única forma que tens de fazer, mas é a mais correcta. O Android está preparado para consumir serviços em WebAPI's, até é o aconselhável para poupares recursos.
Podes recriar os objectos, mas isso consome recursos, e não te esqueças que estás num ambiente com recursos limitados. Cada vez que crias um objecto, incrementas um pointer e quando o Garbage Collector entra em acção, tem mais trabalho, e isto deve ser evitado.
Alternativa: Crias uma WebAPP em PHP e fazes uma WebView no Android ( ver http://developer.and.../targeting.html ).
Cumps
Driver
Podes recriar os objectos, mas isso consome recursos, e não te esqueças que estás num ambiente com recursos limitados. Cada vez que crias um objecto, incrementas um pointer e quando o Garbage Collector entra em acção, tem mais trabalho, e isto deve ser evitado.
Alternativa: Crias uma WebAPP em PHP e fazes uma WebView no Android ( ver http://developer.and.../targeting.html ).
Cumps
Driver