programacion - Android finaliza la actividad y comienza otra
manual de programacion android pdf (2)
A juzgar por su OP, no estoy seguro de si debe inicializar su actividad principal dos veces.
Android está diseñado para que el usuario nunca cierre realmente una aplicación. Concéntrese en anular los métodos del ciclo de vida de Android, como OnResume y OnPause, para guardar datos de UI, etc.
Por lo tanto, no es necesario finish()
explícitamente finish()
la actividad principal (y realmente no debería). Para recibir datos de inicio de sesión o sincronización de las actividades anteriores, solo anule el método OnActivityResult()
. Sin embargo, para hacer esto debes comenzar la actividad usando startActivityForResult(intent)
. Entonces para cada actividad debes hacer esto:
Actividad principal:
static public int LOGIN_RETURN_CODE = 1;
para iniciar sesión:
Intent intent = new Intent(MainActivity.this, LogInActivity.class);
startActivityForResult(intent, LOGIN_RETURN_CODE);
para recibir información de inicio de sesión:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case LOGIN_RETURN_CODE:
//do something with bundle attached
}
}
Actividad de inicio de sesión
static public int SYNC_RETURN_CODE = 2;
para comenzar la sincronización:
Intent intent = new Intent(LogInActivity.this, SyncActivity.class);
startActivityForResult(intent,SYNC_RETURN_CODE);
para recibir información y regresar a Main:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case MainActivity.SYNC_RETURN_CODE:
Intent intent = new Intent(...);
intent.setResult(RESULT_OK);
finish();
}
}
Puede que esto no compile todo, pero espero que entiendas la idea.
Tengo curiosidad por una cosa. ¿Cómo puedo terminar mi actividad actual y comenzar otra?
Ejemplo:
MainActivity
--(starts)--> LoginActivity
--(if success, starts)--> SyncActivity
--(if success start)--> MainActivity (with updated data).
Así que quiero que cuando SyncActivity
comience MainActivity
después de la sincronización exitosa y si SyncActivity
botón Atrás no vuelva a SyncActivity
o cualquier otra actividad abierta antes de SynActivity
.
Lo he intentado con este código:
Intent intent = new Intent(Synchronization.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
this.finish();
pero no funciona correctamente ¿Alguna idea de cómo hacer que las cosas funcionen correctamente?
Utilizar
Intent intent = new Intent(SyncActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);