Avisos

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

Respuesta
 
Herramientas
  #1  
Viejo 15/09/12, 15:41:53
Array

[xs_avatar]
goltara goltara no está en línea
Usuario novato en la web
· Votos compra/venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Post Array con elementos referenciados

Hola buenos dias,

Me ha surgido un problema a la hora de hacer un array con elementos referenciados, el problema es el siguiente:

yo quiero tener un array con elementos referenciados en una clase.

Código:
 public class Datos extends Activity{

    String [] datos = {
            (String)this.getString(R.string.text000).toString(),
            (String)this.getString(R.string.text001).toString(),
            (String)this.getString(R.string.text002).toString(),
            (String)this.getString(R.string.text003).toString(),
            (String)this.getString(R.string.text004).toString(),
            (String)this.getString(R.string.text005).toString(),
            (String)this.getString(R.string.text006).toString(),
            (String)this.getString(R.string.text007).toString(),
            (String)this.getString(R.string.text008).toString(),
            (String)this.getString(R.string.text009).toString(),
            (String)this.getString(R.string.text010).toString(),
            
    };


}
En otra clase quiero llamar a estos Strings de la siguiente forma:

Código:
public class MiClase{

            Datos dat = new Datos();
            Random ran = new Random();
            int x= ran.NextInt(10);
   
            String a =(String) dat.datos[x].toString();

}
Al ejecutar el codigo me da un NullPointException en la linea del String y no se como hacer para que este problema se solucione.

También he probado en hacer un array de enteros y pasarle el entero de la referencia y en la otra clase llamar al metodo getString(); pero no me sirve, me sale tambien el NullPointException

Espero que me podais ayudar. Un saludo !!!!
Responder Con Cita


  #2  
Viejo 15/09/12, 15:48:11
Array

[xs_avatar]
Arasthel Arasthel no está en línea
Cocinero veterano
· Votos compra/venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Tu operador: Amena
Si no me equivoco te falta un public al declarar la variable datos en Datos. El NullPointException vendría porque no se puede acceder a dat.datos. Es posible que por eso hayas tenido que hacer el cast a String y el toString, ya que si fuera público el programa sabría inmediatamente que el contenido de dat.datos es todo String.

EDIT: acabo de ver el código para crear el Array. ¿Por qué tanto cast y toString()? Con un getString() ya debería de devolverte un String sin necesidad de todo ese código. Además, no estoy totalmente seguro de que puedas cargar recursos con getString sin que la Activity haya empezado un onCreate()...

Un saludo.

Última edición por Arasthel Día 15/09/12 a las 15:53:06.
Responder Con Cita
  #3  
Viejo 15/09/12, 15:59:09
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Correcto, getString le devuelve null porque una Activity nunca se crea con new... solo se inician con intents.

Como está no hay contexto inicializado.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 15/09/12 a las 16:02:41.
Responder Con Cita
  #4  
Viejo 15/09/12, 16:19:50
Array

[xs_avatar]
goltara goltara no está en línea
Usuario novato en la web
· Votos compra/venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Entonces, que puedo hacer para que se pueda crear un array de Strings con Strings referenciados??
Responder Con Cita
  #5  
Viejo 15/09/12, 16:43:43
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Muy fácil, en vez de un array de String haces un array de int donde guardas los identificadores, que esos se generan al compilar y son constantes.

En la actividad que quieras usarlos (o en cualquier método donde tengas acceso a un objeto Context inicializado), en vez de sacar un String sacas el id guardado en int[] y llamas al getString(id) para obtener el String deseado.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #6  
Viejo 15/09/12, 16:54:48
Array

[xs_avatar]
goltara goltara no está en línea
Usuario novato en la web
· Votos compra/venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Eso que dices tambien lo he probado, he generado el siguiente codigo

Código:
 public class Datos extends Activity{

    int [] datos = {
            R.string.text000,
            R.string.text001,
            R.string.text002,
            R.string.text003,
            R.string.text004,           
    };


}
:

Código:
public class MiClase{

            Datos dat = new Datos();
            Random ran = new Random();
            int x= ran.NextInt(5);
   
            String a =(String) getString((int)dat.datos[x]);

}
y me vuelve a salir un NullPointException

Alguna otra sugerencia??

Gracias por vuestras respuestas!!!

Última edición por goltara Día 15/09/12 a las 16:56:57.
Responder Con Cita
  #7  
Viejo 15/09/12, 16:59:03
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Las actividades no se crean con new, y al getString no lo llamas desde una actividad o desde un contexto inicializado.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #8  
Viejo 15/09/12, 21:41:18
Array

[xs_avatar]
goltara goltara no está en línea
Usuario novato en la web
· Votos compra/venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Ya he conseguido arreglarlo al final tu solución me ha servido, muchas gracias!!!!
Responder Con Cita
Respuesta

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



Hora actual: 19:27:24 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /