¿Puedo obligar al botón de retroceso de Android a retroceder dos pasos en la pila de actividad?
Sé que puedo anular el método onKeyDown
, pero quiero volver a hacer es cosa, sólo dos veces!
- ¿Cuál es la diferencia entre la llamada de actividad explícita e implícita en android?
- ¿Cómo puedo crear un código común para partes de las actividades de Android?
- Inicio de una nueva actividad dentro de doInBackGround () de AsyncTask
- Compruebe si la actividad se está ejecutando desde el servicio
- Enlace de Android entre dos actividades en el mismo paquete
- ¿Por qué onCreate se llama Actividad al girar la tableta Android?
- SharedPreferences Borrar / Guardar
- Variable final del archivo de recursos
- Android - Cómo evitar el código duplicado entre actividades
- Cómo probar el método Activity onDestroy
- El tema translúcido no funciona cuando se programa mediante programación en Android 2.3.3 o 4.2
- Actividad flotante de Android con descartar en deslizar
- Obtener la altura del teclado de software de Android sin ajustar "adjustResize"
FirstActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent);
SecondActivity
int REQUEST_CODE = 123 Intent intent = new Intent(SecondActivity.this, ThirdActivity.class); startActivityForResult(intent, REQUEST_CODE);
(Para hacer este pedagógico hay más código para esta actividad a continuación)
ThirdActivity
@Override public void onBackPressed() { // Semi ugly way of supporting that back button takes us back two activites instead of the usual one. setResultOkSoSecondActivityWontBeShown(); finish(); } private void setResultOkSoSecondActivityWontBeShown() { Intent intent = new Intent(); if (getParent() == null) { setResult(Activity.RESULT_OK, intent); } else { getParent().setResult(Activity.RESULT_OK, intent); } }
SecondActivity (de nuevo)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 123) { if (resultCode == RESULT_OK) { finish(); } } }
Estoy pensando en ello de esta manera:
A -> B -> C
A, B, C actividades.
No se puede hacer una copia dos veces ya que el primer onKeyDown()
se ejecutará en C y el segundo se ejecutará en B.
No sé por qué estás tratando de hacer, pero aquí hay algunas opciones.
-
Uso del
android:noHistory
tag :Tal vez su actividad C está haciendo algo que no necesita una vista y es por eso que desea volver dos veces.
-
Usando una intención. Algo como:
Intent intent = new Intent(C.this, A.class); startActivity(intent);
-
Utilizando el
finishActivityFromChild()
. Nunca lo he probado, pero parece que puedes usarlo para decidir qué hacer en B, dependiendo de cómo termine C.
| * | Retroceder una pantalla o terminar actividad:
finish();
| * | Volviendo más de una pantalla:
Puede regresar a la pantalla que necesite usar con intención y usar banderas para evitar volver a la misma pantalla:
Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class); gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(gotoScreenVar);
- Mejor manera de obtener todo el texto en un EditText de un InputConnection?
- ¿Cómo puedo pasar variables extra durante una búsqueda invocada por un SearchView / Widget?