Quiero hacer algo simple en la aplicación de Android. ¿Cómo es posible volver a una actividad anterior?
¿Qué código necesito para volver a la actividad anterior?
Quiero hacer algo simple en la aplicación de Android. ¿Cómo es posible volver a una actividad anterior?
¿Qué código necesito para volver a la actividad anterior?
Respuestas:
Las actividades de Android se almacenan en la pila de actividades. Volver a una actividad previa podría significar dos cosas.
Abriste la nueva actividad desde otra actividad con startActivityForResult . En ese caso, simplemente puede llamar a la función finishActivity () desde su código y lo llevará de regreso a la actividad anterior.
Mantenga un registro de la pila de actividades. Siempre que comience una nueva actividad con una intención, puede especificar una marca de intención como FLAG_ACTIVITY_REORDER_TO_FRONT
o FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Puede usar esto para barajar entre las actividades en su aplicación. Sin embargo, no los he usado mucho. Echa un vistazo a las banderas aquí: http://developer.android.com/reference/android/content/Intent.html
Como se menciona en los comentarios, si la actividad se abre con, startActivity()
entonces se puede cerrar con finish()
. Si desea utilizar el botón Arriba, puede detectarlo en el onOptionsSelected(MenuItem item)
método de verificación de la ID del elemento en android.R.id.home
comparación con R.id.home
lo mencionado en los comentarios.
Tratar Activity#finish()
. Esto es más o menos lo que hace el botón Atrás de forma predeterminada.
this.finish();
#
es un indicador que finish()
es un método no estático de la clase Actividad. No es Java válido, pero ayuda a explicar cómo se puede usar el método.
.
, es decir:Activity.someStaticMethod()
Simplemente escriba en clic en terminar () . Te llevará a la Actividad anterior.
Sólo esta
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Esto lo llevará a una actividad previa manteniendo su pila y borrando todas las actividades posteriores de la pila.
Por ejemplo, si la pila era A-> B-> C-> D y comienza B con esta bandera, la pila será A-> B
¿Desea tomar el control del comportamiento del botón Atrás? Puede anular el botón Atrás (para ir a una actividad específica) a través de uno de los dos métodos.
Para Android 1.6 y versiones inferiores:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
O si solo es compatible con Android 2.0 o superior:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Para más detalles: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Simplemente llame a este método para finalizar la actividad actual o para volver por onBackPressed
finish();
O
onBackPressed();
si quieres ir a solo quieres ir a la actividad anterior usa
finish();
O
onBackPressed();
si desea ir a la segunda actividad o debajo, use lo siguiente:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
Agregue esto en su método onCLick (), volverá a su actividad anterior
terminar();
o puedes usar esto. Funcionó perfectamente para mí
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Si ha configurado correctamente el archivo AndroidManifest.xml con actividad principal, puede usar:
NavUtils.navigateUpFromSameTask(this);
Donde esta es la actividad de su hijo.
Prueba esto es actuar ya que tienes que presionar el botón Atrás
finish();
onBackPressed();
Puede llamar explícitamente onBackPressed
es la forma más fácil.
Consulte Volver a la actividad anterior para más detalles.
Tengo el mismo problema y
finish(); OR super.onBackPressed();
funcionó bien para mí, ambos funcionaron igual, pero no tuve suerte con return
Comience la segunda actividad con intención (ya sea de uso startActivity
o de startActivityForResult
acuerdo con sus requisitos). Ahora, cuando el usuario presione el botón Atrás, la actividad actual en la parte superior se cerrará y se mostrará la anterior.
Ahora digamos que tiene dos actividades, una para seleccionar algunas configuraciones para el usuario, como idioma, país, etc., y después de seleccionarla, el usuario hace clic en el botón Siguiente para ir al formulario de inicio de sesión (por ejemplo). Ahora, si el inicio de sesión no es exitoso, el usuario estará en la actividad de inicio de sesión, ¿qué sucede si el inicio de sesión es exitoso?
Si el inicio de sesión es exitoso, entonces debe comenzar otra actividad. Significa que se iniciará una tercera actividad, y aún hay dos actividades en ejecución. En este caso, será bueno usarlo startActivityForResult
. Cuando el inicio de sesión sea exitoso, envíe datos OK nuevamente a la primera actividad y cierre la actividad de inicio de sesión. Ahora, cuando se reciben los datos, inicie la tercera actividad y cierre la primera actividad utilizando finalizar.
@Override
public void onBackPressed() {
super.onBackPressed();
}
y si quieres hacer clic en el botón regresar, simplemente pon
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Pruebe esto, funciona tanto en el botón de retroceso de la barra de herramientas como en el botón de retroceso de hardware .
Hay algunos casos para volver a su actividad anterior:
Caso 1: si desea volver a su actividad anterior, entonces ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Caso 2: ActividadA -> FBHelperActivity ----> ActividadA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
Después de eso, tiene dos formas de retroceder de la actividad actual a la actividad anterior:
Simplemente llame: finish()
debajo del botón haga clic en escucha, o anule el siguiente método para retroceder usando el botón de retroceso del sistema:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Además de todas las respuestas mencionadas, sigue siendo una forma alternativa de hacerlo, digamos que tiene dos clases, clase A y clase B.
Clase A, ha realizado algunas actividades, como seleccionar la casilla de verificación, imprimir algunos datos e intentar la clase B. Clase B, le gustaría pasar varios valores a la clase A y mantener el estado anterior de la clase A, puede usar, pruebe esta alternativa método o descargue el código fuente para demostrar esto
o
http://developer.android.com/reference/android/content/Intent.html
Solo intenta esto en la primera actividad
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
En tu segunda actividad
@Override
public void onBackPressed() {
this.finish();
}