Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 11/06/12, 15:16:19
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Otras de cosas que no comprendo

Os pongo el código:
Código:
private void leerPuntosApp(){
    	InputStream stream =getResources().openRawResource(R.raw.sitios);
    	BufferedReader brin = new BufferedReader(new InputStreamReader(stream));
    	
    	try {
			while(brin.ready()){
				String []todoPartes = brin.readLine().split("\n");
				
				for(int i= 0;i<todoPartes.length;i++)
					dibujarPuntos(todoPartes[i]);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
    
    private void leerPuntoPropios(){
    	String todo = null;
		
		if(sitios.exists() && sitios.canRead()){
			FileInputStream fileIN = null;
			try{
			   	fileIN = new FileInputStream(sitios);
		    	byte [] reader = new byte[fileIN.available()];
		    	while(fileIN.read(reader)!= -1){ }
		    	todo = new String(reader);
		    }catch(Exception ex){
				ex.printStackTrace();
			}finally{
				if(fileIN != null){
					try{
						fileIN.close();
					}catch(IOException ioExcep){
						ioExcep.printStackTrace();
					}
				}
			}
		}
		
		String []todoPartes = todo.split("\n");
					
		for(int i= 0;i<todoPartes.length;i++)
			dibujarPuntos(todoPartes[i]);
	}
      private void dibujarPuntos(String punto){
    	String []separados = punto.split(",");
    	Dialog dialog = hacerDialogo(separados[0],separados[1],
	    		  separados[2],separados[3],separados[4]);
	      
	   //AQUI ME DA UN NumberFormatException 
	    lat = Double.parseDouble(separados[0])*1E6;
	    
	    lon = Double.parseDouble(separados[1])*1E6;
	      
	   
	}
El código es bastante sencillo cojo un txt y lo voy partiendo en trozos hasta quedarme con lo que yo quiero. Como veis tengo dos maneras de leer el txt según lo lea de la propia aplicación o de la SD. Cuando leo el txt de la SD no hay problema pero si lo leo de la propia aplicación (carpeta raw) me salta el error y no lo entiendo, los dos los he escrito yo.

Alguien me ayuda?
Responder Con Cita


  #2  
Viejo 11/06/12, 19:55:55
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
En la excepción te suele decir qué es lo que no le ha gustado, y siempre puedes poner una traza antes para ver qué valor tiene la variable que ha hecho saltar la excepción.

Y con eso vas para atrás en el código y ves si es que estabas cortando mal la cadena, o te sobraba un punto, una coma, o es que había un elemento vacío o null, por ejemplo...
Responder Con Cita
  #3  
Viejo 11/06/12, 19:58:22
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno esta claro que mi problema es que no se leer del raw línea a línea ¿Como lo hago?

Tengo esto en mi txt:

38.706937,-0.494406,Alcoy,Alcoy,Comunidad Valenciana
37.605651,-0.991294,Vuelo1,Cartagena,Región de Murcia
37.652022,-0.719147,Vuelo2,La Manga del Mar Menor,Región de Murcia
42.817988,-1.644183,Vuelo3,Pamplona,Navarra
36.750779,-5.812395,Vuelo4,Arcos de la frontera,Andalucia

Como guardo cada línea en una posición de un array de string??
Responder Con Cita
  #4  
Viejo 11/06/12, 20:09:49
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Eso es con el split, que me alegro de que lo uses ;)

De todas formas, revisa el código, no vale para nada hacer readLine().split("\n") porque readLine ya devuelve solo una línea de texto...

Te recomiendo poner trazas, para saber si lees bien las líneas, y luego para saber si las separas bien.

Intentar acaparar el problema de golpe no tiene sentido, hay que probar los métodos individualmente, desde los más básicos a los más complejos.
Responder Con Cita
  #5  
Viejo 11/06/12, 20:14:18
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Los consejos siempre son bien recibidos. He cambiado el código y ahora hago esto.

Código:
private void leerPuntosApp(){
    InputStream stream =getResources().openRawResource(R.raw.sitios);
    BufferedReader brin = new BufferedReader(new InputStreamReader(stream));
    String todoPartes = null;

    try {
        while(brin.read() != -1){
            todoPartes = brin.readLine();
            dibujarPuntos(todoPartes);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private void dibujarPuntos(String punto){
    Toast.makeText(this, punto, Toast.LENGTH_SHORT).show();
    String []separados = punto.split(",");
    for(int i =0;i<separados.length;i++){
        Dialog dialog = hacerDialogo(separados[0],separados[1],
                  separados[2],separados[3],separados[4]);

        itemOverlay = new CargarItem(puntosMapa,this,dialog);

        lat = Double.parseDouble(separados[0])*1E6;
        lon = Double.parseDouble(separados[1])*1E6;

        GeoPoint point = new GeoPoint(lat.intValue(),lon.intValue());
        //GeoPoint point = calcularCoordenadas(listaDeSitios.get(i).getCiudad());

        item = new OverlayItem(point,separados[2], null);
        itemOverlay.addOverlay(item);
        mapOverlays.add(itemOverlay);
        mapView.postInvalidate();
    }
}
Lo más extraño es que solo me pinta el primer punto pero el toast me muestra todas las líneas. No lo entiendo.
Responder Con Cita
  #6  
Viejo 11/06/12, 20:19:04
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
¿Y el bucle este " for(int i =0;i<separados.length;i++){"?
Responder Con Cita
  #7  
Viejo 11/06/12, 20:20:24
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Se que no sirve, esta de una prueba previa. Aunque lo quite se obtiene lo mismo
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:33:54 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007