Home Menu

Menu



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 15/09/12, 15:41:53
Avatar de goltara
goltara goltara no está en línea
Usuario novato en la web
Mensajes: 29
Compra y venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de Arasthel
Arasthel Arasthel no está en línea
Cocinero veterano
Mensajes: 1,946
Compra y venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Versión de ROM: DroidKang
Tu operador: Amena
Mencionado: 393 comentarios
Tagged: 1 hilos
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
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
Correcto, getString le devuelve null porque una Activity nunca se crea con new... solo se inician con intents.

Como está no hay contexto inicializado.

Ú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
Avatar de goltara
goltara goltara no está en línea
Usuario novato en la web
Mensajes: 29
Compra y venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
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.
Responder Con Cita
  #6  
Viejo 15/09/12, 16:54:48
Avatar de goltara
goltara goltara no está en línea
Usuario novato en la web
Mensajes: 29
Compra y venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
Las actividades no se crean con new, y al getString no lo llamas desde una actividad o desde un contexto inicializado.
Responder Con Cita
  #8  
Viejo 15/09/12, 21:41:18
Avatar de goltara
goltara goltara no está en línea
Usuario novato en la web
Mensajes: 29
Compra y venta: (1)
 
Fecha de registro: ene 2011
Mensajes: 29
Modelo de smartphone: samsung galaxy s
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
Ya he conseguido arreglarlo al final tu solución me ha servido, muchas gracias!!!!
Responder Con Cita
Respuesta

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


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: 21:13:21 (GMT +1)

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