|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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(),
};
}
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();
}
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 !!!! |
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
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!
|
|
#6
|
||||
|
||||
|
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]);
}
Alguna otra sugerencia?? Gracias por vuestras respuestas!!! Última edición por goltara Día 15/09/12 a las 16:56:57. |
|
#7
|
||||
|
||||
|
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!
|
![]() |
Estás aquí
|
||||||
|
||||||
| Herramientas | |