PDA

Ver la Versión Completa : [ CONSULTA ] Recargar Activity | Diseño y trabajo con imágenes


the_gentleman
07/02/12, 17:03:58
Buenas, pues tengo una dudilla que me esta haciendo perder la paciencia jeje.
Estoy ya enterandome un poco mas de como va la programación en android porque tengo que hacerlo a marchas forzadas para la aplicación de un proyecto.

El caso es que tengo una aplicación que muestra los datos de mi mysql remoto pasando por un webservice en PHP.

Como recivo los datos en JSON me construyo una sentencia IF para que se me vea mas gráfico.

Pues bien, tengo 2 dudas:

1º. Como hago para recargar los datos de dicha actividad o bien mediante un botón que accione la recarga o cada 'n' segundos, ya que mis datos del servidor se actualizan frecuentemente.

2º. Como hago para trabajar con imágenes de este modo:

if(condicion)
{
mostrar imagen1;
}
else
{
mostrar imagen2;
}

Estos dos puntos fundamentales me faltan en mi aplicación para que empiece a ser decente y no encuentro la manera de trabajarlo.
¿Alguna idea?
Muchas gracias y un saludo.

kriogeN
07/02/12, 17:23:59
1º) ¿Te refieres a recargar la activity por completo? Creo que es más práctico que hagas algo para gestionar el control que quieres actualizar, pero aún así supongo que podrías hacer esto:

startActivity(getIntent());
finish();

2º) Supongo que lo quieres hacer actualizando un ImageView, suponiendo que el ImageView se llama imagen:

Si la imagen es un Bitmap y se llama bmp:

imagen.setImageBitmap(bmp);

Si la imagen es un Drawable:

imagen.setImageResource(R.drawable.nombreDelDrawab le);

the_gentleman
07/02/12, 17:42:12
Muchas gracias kriogeN!! :D

Lo de las imágenes me ha quedado claro, lo de la activity, es que tengo una activity que solo hace una conexión al PHP de mi servidor para cojer los datos JSON y como esos datos se cambian cada cierto tiempo necesito recargarlo, solo muestro datos en esa actividad.

the_gentleman
07/02/12, 18:33:55
He encontrado esto:
1
2
3
4
5
6
7
8
9
//reinicia una Activity
public static void reiniciarActivity(Activity actividad){
Intent intent=new Intent();
intent.setClass(actividad, actividad.getClass());
//llamamos a la actividad
actividad.startActivity(intent);
//finalizamos la actividad actual
actividad.finish();
}

Y haremos la llamada en el momento que queramos reinciar la Activity:
1
2
3
//...
reiniciarActivity(this);
//..



Pero no soy capaz de poner la llamada a la función xD

the_gentleman
07/02/12, 20:52:21
Nada no hay manera, no consigo recargar la página, preferiría que cada 10 segundos por ejemplo el activity se recargue...:S

the_gentleman
07/02/12, 21:37:17
He hecho esto en el onCreate, pero no me recarga la actividad :(

Intent intent = new Intent(this, miPantalla.class);
PendingIntent sender = PendingIntent.getService(this, 0, intent, 0);

// We want the alarm to go off 60 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
int REPEATING_ALARM_INTERVAL_IN_MINUTES = 0;
firstTime += REPEATING_ALARM_INTERVAL_IN_MINUTES * 60 * 1000;

// Schedule the alarm!
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKE UP, firstTime,
REPEATING_ALARM_INTERVAL_IN_MINUTES * 60 * 1000, sender);


Edito: SOLUCIONADO! :) Con el getIntent de kriogeN me he montado algunas paranoias con unos tabs que muestro y lo he recargado de nuevo con un codigo que he encontrado por ahi, en concreto es:

public static int MILISEGUNDOS_ESPERA = 5000;
public void onClick_AccionTrasSegundos(View v) {
esperarYCerrar(MILISEGUNDOS_ESPERA);
}

/**
* Espera y recarga la aplicación tras los milisegundos indicados
* @param milisegundos
*/
public void esperarYCerrar(int milisegundos) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// acciones que se ejecutan tras los milisegundos
finalizarApp();
}
}, milisegundos);
}

/**
* Recarga la aplicación
*/
public void finalizarApp() {
Intent intent = new Intent(this, Container.class);
startActivity(intent);

}

kriogeN
07/02/12, 22:31:39
Me alegro de que al final lo hayas solucionado, pero insisto en que lo que yo haría es en el Handler recargar SÓLO el control que contiene los datos, y no la activity completa.