![]() |
|
| 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 |
«
Tema Anterior
|
Siguiente tema
»
|
|
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. Última edición por mocelet Día 15/09/12 a las 16:02:41 |
|
#4
|
||||
|
||||
|
Entonces, que puedo hacer para que se pueda crear un array de Strings con Strings referenciados??
|
|
#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. |
|
#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.
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 21:13:21 (GMT +1)
HTCMania: líderes desde el 2007





