Hola a todos.
otra vez yo por aqui con un adudita que me esta volviendo loco, la cuestion es algo que surgio a partir del post anterior
http://www.forosdelweb.com/f30/secur...eption-746599/ la cuestion es que ahora me manda una excepcion en el manejo de estos componentes
StringItem, les paso el codigo completo por si me pueden ayudar.
Código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.InputStream;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
* @author Lair
*/
public class diccionario extends MIDlet implements ItemStateListener, CommandListener{
Display pantalla;
Form Form1,Form2;
Alert error,test;
TextField input;
Command salir,buscar,regresar;
List listRoots, listContents;
StringItem respuesta[];
Class cc = this.getClass();
InputStream ips= cc.getResourceAsStream("/definiciones.txt");
int i=0,cont=0;
byte b[]=new byte[1];
String CHAR="",Cadena="";
public diccionario(){
pantalla=Display.getDisplay(this);
Form1= new Form("Diccionario");
Form2=new Form("Resultados");
error=new Alert("Alerta", "", null, AlertType.WARNING);
error.setTimeout(Alert.FOREVER);
test=new Alert("Prueba", "Alerta de debugeo", null, AlertType.CONFIRMATION);
test.setTimeout(Alert.FOREVER);
input=new TextField("Buscar Palabra", "", 70, TextField.ANY);
salir =new Command("Salir", Command.EXIT, 1);
buscar=new Command("Buscar", Command.ITEM, 1);
regresar=new Command("Regresar", Command.BACK, 1);
Form1.append(input);
Form1.addCommand(buscar);
Form1.addCommand(salir);
Form1.setItemStateListener(this);
Form1.setCommandListener(this);
Form2.addCommand(regresar);
Form2.setCommandListener(this);
}
public void startApp() {
pantalla.setCurrent(Form1);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d){
if(c==buscar){
if(!input.getString().equals("")){
Form2.setTitle("Resultados: "+input.getString());
try {
CHAR=Cadena="";
cont=0;
while(ips.read(b)!=-1){
CHAR=new String(b);
if(CHAR.equals("\n"))
cont++;
}
respuesta=new StringItem[cont];
cont=0;
ips.reset();
while(ips.read(b)!=-1){
CHAR=new String(b);
Cadena+=CHAR;
if(CHAR.equals("\n")){
//esta es la linea que manda la excepcion
respuesta[cont]=new StringItem(Cadena, "");
Cadena="";
Form2.append(respuesta[cont]);
cont++;
}
CHAR="";
}
pantalla.setCurrent(Form2);
} catch (Exception ex) {
error.setString("Error:\n"+ex);
pantalla.setCurrent(error);
}
}else{
error.setString("Debe introducir algun texto.");
pantalla.setCurrent(error);
}
}
if(c==regresar){
Form2.deleteAll();
pantalla.setCurrent(Form1);
}
if(c==salir){
destroyApp(false);
notifyDestroyed();
}
}
public void itemStateChanged(Item i){
if(i==input){
System.out.println("Evento del input");
}
}
}
cuando lo ejecuto me manda la siguiente excepcion
Cita: java.lang.ArrayIndexOutOfBoundsException: 0
cabe mencionar que la excepcion se produce la segunda vez que entro a ese bloque de codigo, que es la linea que dice
if(c==buscar){, tambien se que es esa excepcion, lo que no se es por que la manda solo despues de la primera vez.
creo que el principal problema es con los conocimientos basicos de java, si es asi, Pido a los moderadores muevan este post al foro correcto (java), y ver si es posible que alla me ayude de una mejor manera.
gracias por su tiempo y ayuda.