Quiero terminar una actividad de otra actividad, como:
En la Actividad [A], al hacer clic en el botón, estoy llamando a la Actividad [B] sin terminar la Actividad [A].
Ahora, en la Actividad [B], hay dos botones, Nuevo y Modificar . Cuando el usuario hace clic en modificar, saca una actividad [A] de la pila con todas las opciones marcadas.
Pero cuando el usuario haga clic en el botón Nuevo de la Actividad [B], tendré que terminar la Actividad [A] de la pila y volver a cargar esa Actividad [A] en la pila.
Lo estoy intentando, pero no puedo terminar la Actividad [A] de la pila ... ¿Cómo puedo hacerlo?
Estoy usando el código como:
De la actividad [A]:
Intent GotoB = new Intent(A.this,B.class);
startActivityForResult(GotoB,1);
Otro método en la misma actividad
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 1)
{
if (resultCode == 1) {
Intent i = getIntent();
overridePendingTransition(0, 0);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(i);
}
}
}
Y en la Actividad [B], al hacer clic en el botón:
setResult(1);
finish();
Respuestas:
Haga su actividad A en el archivo de manifiesto:
launchMode = "singleInstance"
Cuando el usuario hace clic en nuevo, hazlo
FirstActivity.fa.finish();
y llama al nuevo Intent.Cuando el usuario haga clic en modificar, llame al nuevo Intent o simplemente finalice la actividad B.
PRIMERA MANERA
En tu primera actividad, declara una
Activity object
como esta,ahora usa ese objeto en otro
Activity
para terminar la primera actividad como esta,SEGUNDA MANERA
Mientras llama a su actividad
FirstActivity
que desea finalizar tan pronto como continúe, puede agregar una bandera mientras llamaFirstActivity
Pero al usar esta bandera, la actividad se terminará incluso si no lo desea. y en algún momento,
onBack
si desea mostrar elFirstActivity
, tendrá que llamarlo usando intent.fuente
Eso puede hacer, pero creo que no debe interrumpir el flujo normal de actividad. Si desea finalizar su actividad, simplemente puede enviar una transmisión de su actividad B a la actividad A.
Cree un receptor de transmisión antes de comenzar su actividad B:
Envíe la transmisión de la actividad B a la actividad A cuando desee finalizar la actividad A de la B
Espero que funcione para ti ...
fuente
broadcast_receiver
unregisterReceiver()
Esta es una pregunta de comunicación bastante estándar. Un enfoque sería utilizar un ResultReceiver en la Actividad A:
y luego en la Actividad B puedes terminarlo a pedido así:
Intenta algo así.
fuente
Hay un enfoque que puede utilizar en su caso.
Paso 1: Inicie la Actividad B desde la Actividad A
Paso 2: Si el usuario hace clic en el botón Modificar, inicie la Actividad A usando el
FLAG_ACTIVITY_CLEAR_TOP
.Además, pase el indicador adicional.Paso 3: Si el usuario hace clic en el botón Agregar, inicie la Actividad A usando el
FLAG_ACTIVITY_CLEAR_TOP
.Además, pase la marca adicional.FLAG_ACTIVITY_CLEAR_TOP
borrará todas las actividades abiertas hasta el objetivo y se reiniciará si no se define ningún modo de lanzamiento en la actividad objetivoPaso 4: Ahora el
onCreate()
método de la Actividad A, necesita recuperar esa bandera.fuente
Inicie su actividad con el código de solicitud:
Y puedes cerrarlo de cualquier otra actividad como esta:
fuente
Vea mi respuesta a la pregunta de Stack Overflow Finalizar todas las actividades anteriores .
Lo que necesita es agregar el
Intent.FLAG_CLEAR_TOP
. Esta bandera asegura que todas las actividades por encima de la actividad objetivo en la pila estén terminadas y que se muestre.Otra cosa que necesitas es la
SINGLE_TOP
bandera. Con este evitas que Android cree una nueva actividad si ya hay una creada en la pila.Solo tenga cuidado de que si la actividad ya se creó, la intención con estos indicadores se entregará en el método llamado
onNewIntent(intent)
(debe sobrecargarlo para manejarlo) en la actividad de destino.Luego
onNewIntent
, tiene un método llamado reiniciar o algo que llamaráfinish()
y lanzará una nueva intención hacia sí mismo, o tendrá unrepopulate()
método que establecerá los nuevos datos. Prefiero el segundo enfoque, es menos costoso y siempre puede extraer laonCreate
lógica en un método separado que puede llamar para completar.fuente
Acabo de aplicar la solución de Nepster y funciona de maravilla. Hay una pequeña modificación para ejecutarlo desde un fragmento.
A tu fragmento
Y a su OnNewIntent () de la Actividad que le gustaría reiniciar.
fuente
Creo que tengo el enfoque más fácil ... al presionar nuevo en B ..
y en A consíguelo
fuente
Sé que esta es una pregunta antigua, algunos de estos métodos no funcionaron para mí, así que para cualquiera que busque en el futuro o tenga mis problemas, esto funcionó para mí.
Anulé
onPause
y llaméfinish()
dentro de ese método.fuente
Primero llame y
startactivity()
luego usefinish()
fuente