PDA

Ver la Versión Completa : [ CONSULTA ] Mejor forma de hacer lo siguiente:


biktorman
20/06/14, 11:04:41
Buenas,

Llevo un tiempo aprendiendo algo de programación de android de manera autodidacta, de manera que, creo que ya tengo la base de conocimiento como para empezar a desarrollar una App. Bien, la idea la tengo, sera una App educativa, pero me han surgido dudas de como programar cierta parte de la App, me explico:

La App dispondrá de su menú principal, categorías y secciones, y en varias de ellas, contendrán "bloques" con el mismo "formato" por así llamarlo (Un ImageView, TextView, Buttons y cargar Sonido, ademas de un código), que harán lo mismo pero con diferentes valores cargados desde la activity, y dependiendo de en que activity se encuentre ,cargar por ejemplo, 10 veces lo mismo pero con diferentes valores (imagen, texto...).

Yo se programar autómatas, y con los autómatas puedes crear bloques genéricos, en los que programas cierto funcionamiento o condiciones, y los puedes usar en todo el programa introduciéndoles diferentes valores, no se si esto seria posible en android. También decir que estoy usando Android Studio.

Ahora viene mi duda, no se como hacer esto, me e estado informando un poco y no se si con Fragments o creando mi propio custom view o compound controls o no se como hacerlo, de estas cosas no estoy muy informado ya que no he encontrado mucha información, y por eso querría pediros consejo, de como lo podría hacer sencillo y de la mejor manera.

Espero haberme explicado correctamente, si no es así preguntar ;)

Muchísimas gracias de antemano y un saludo !

kriogeN
20/06/14, 17:18:55
Si sólo se ve un "bloque" al mismo tiempo en la pantalla, con Fragments, quien dice 1 dice 3 o 4, pero que siempre sea el mismo número fijo.

Si el número es variable y quieres que se pueda hacer scroll con los bloques, con un ListView y un Custom Adapter.

biktorman
20/06/14, 23:59:15
Hola kriogeN, muchisimas gracias por tu respuesta.

La idea seria hacerlo con un solo bloque, por lo que con un fragment se podría hacer. Bien, he estado probando un poco, pero no veo como plantear el problema. Bien, tenemos la activity, y dentro de la activity tenemos el fragment, he aquí cuando viene el dilema, el fragmento tendrá su java específico, en el que tendrá X numero de variables, como se podría hacer para que desde el activity escribir en esas variables? Deduzco que mediante getter y setter o algo del estilo, este método lo he probado para escribir y leer variables desde una clase global, pero para hacerlo en un fragment, no se como se tendría que hacer.

Otra cosa es, como y donde tendría que hacer la declaración de variables y de los elementos del fragment, en el oncreateview? Oncreate?

Muchísimas gracias y un saludo!

kriogeN
21/06/14, 01:22:50
Un Fragment es como cualquier objeto de Java, a diferencia de la Activity, hay que declararlo y tiene su constructor.

Dicho de otra forma, desde que construyes el Fragment hasta que lo muestras has podido manipularlo como te de gana. Así que puedes construir el Fragment, establecerle las variables mediante un método y luego hacerle la transacción y mostrarlo.

Hasta que no hagas la transacción no empezará su ciclo, y por tanto no se habrá ejecutado el onCreateView, así que ahí te puedes limitar a simplemente usar las variables, ya que previamente las has establecido con un método sobre el Fragment.

biktorman
22/06/14, 23:10:03
Hola de nuevo,

Después de varias horas probando y probando, al fin he conseguido el 90% de lo que planteaba. Bien, para situaros, tengo 3 activitys, y 1 fragment. La primera activity seria el menú desde el que cargar las otras dos activitys, que son identicas, un textview con el fragment. En el fragment, aparte de declarar y de hacer findviewbyid a los objetos, lo que he hecho a sido, mediante el siguiente codigo:

pruebafragment activity = (pruebafragment) getActivity();

Para así recibir los datos que he declarado en la activity "pruebafragment", con su correspondiente getter:

public String getTexto1() {
return Texto1;
}

Hasta aquí todo bien, pero ahora me surge otro inconveniente, que es que el fragment funciona bien, pero claro, al haber declarado que el getactivity(); me lo haga desde la activity "pruebafragment", si lo quiero reutilizar el fragment en la otra activity, lógicamente me da error ya que cuando lee el getactivity(); como no es la que esta, se cierra.

Existe alguna forma de asignarle que escoga de que activity hacer el get dependiendo de en que activity se encuentre?

Espero haberme explicado bien, muchas gracias y un saludo.

kriogeN
23/06/14, 00:00:16
Lo más correcto es establecer la variable mediante un setter en el Fragment, y no hacer que lo lea de la Activity.

Pero si aún así prefieres hacerlo así, puedes crear una Activity que contenga al método getTexto1 y hacer que el resto de Activities hereden de ella. O también puedes hacer un if (getActivity() instanceof pruebafragment) .... else if (getActivity() instanceof loquesea) etc...