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:
cuando lo ejecuto me manda la siguiente excepcion/*
* 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");
}
}
}
Cita:
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.java.lang.ArrayIndexOutOfBoundsException: 0
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.

