Foros del Web » Programación para mayores de 30 ;) » Programación móvil »

Problema con StringItem

Estas en el tema de Problema con StringItem en el foro de Programación móvil en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/10/2009, 12:41
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 16 años, 5 meses
Puntos: 46
Problema con StringItem

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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:22.