terminar studio retornar regresar pantalla navegacion entre cerrar boton atras anterior activity android android-activity

studio - Cómo cerrar la actividad y volver a la actividad anterior en Android



retornar activity android (15)

Tengo una actividad principal, que cuando hago clic en un botón, comienza una nueva actividad, utilicé el siguiente código para hacerlo:

Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent);

El código anterior se ejecutó desde la actividad principal.

Ahora en mi nueva actividad que es llamada por la actividad principal, tengo un botón de retroceso. Cuando hago clic en este botón de retroceso, quiero que mi nueva actividad se cierre y debe volver a la actividad principal original.

Intenté llamar a super.finish() y simplemente finish() (desde la nueva actividad) pero esto cierra mi aplicación completa (incluida mi actividad principal).

¿Cómo puedo cerrar la actividad que está actualmente en foco y luego volver a la actividad principal?

EDITADO

El hecho de que el botón Atrás de mi teléfono también cierra toda mi aplicación, me lleva a pensar que he comenzado la segunda actividad incorrectamente.

OK, he estado buscando,

Creé una Actividad de Configuración que usa el mismo código de manifiesto y el mismo código para Iniciar la actividad.

Para la actividad de configuración cuando presiono el botón Atrás, vuelve a la actividad Principal.

Con la actividad mencionada anteriormente en la pregunta principal, simplemente sale de toda mi aplicación.

Entonces, el problema no parece ser el código para finalizar la actividad, sino la actividad en sí misma.


Creo que está llamando al método finish() en MainActivity antes de iniciar SettingsActivity .

El escenario que ha descrito ocurrirá de la siguiente manera:

YA SEA

Ha configurado android:noHistory = "true" para MainActivity dentro de AndroidManifest.xml que hace que MainActivity finish automáticamente al presionar la tecla de retroceso.

O

Antes de cambiar a ''SettingsActivity'', ha llamado a finish() en su MainActivity , que lo elimina. Cuando presiona el botón Atrás, ya que no hay ninguna otra actividad preestablecida en la pila para mostrar, vuelve a la pantalla principal.


Creo que su segunda actividad probablemente no esté vinculada a su actividad principal como actividad infantil. Verifique su archivo AndroidManifest.xml y vea si la entrada <activity> para su actividad secundaria incluye un atributo android:parentActivityName . Debería verse algo como esto:

<?xml ...?> ... <activity android:name=".MainActivity" ...> </activity> <activity android:name=".ChildActivity" android:parentActivityName=".MainActivity" ...> </activity> ...


Cuando haces clic en tu botón puedes hacer que llame:

super.onBackPressed();


El final cierra la aplicación completa, esto es algo que odio en el desarrollo de Android no terminar que está bien, pero que no se mantienen actualizados con la sintaxis correcta que tienen

startActivity(intent)

Por qué no

closeActivity (intención)?



Esto cierra la aplicación completa:

this.finish();


No sé si esto es incluso útil o no, pero estaba luchando con el mismo problema y encontré una manera bastante fácil, con solo una variable booleana global y una acción onResume (). En mi caso, mi Actividad C si se hace clic en un botón específico, ¡debería desencadenar el final () de la Actividad B!

Activity_A -> Activity_B -> Activity_C

Activity_A (se abre normalmente Activity_B)

Activity_B (en algunos botones, haz clic en Activity_C):

// Global: boolean its_detail = false; // ------- SharedPreferences prefs = getApplicationContext().getSharedPreferences("sharedpreferences", 0); boolean v = prefs.getBoolean("select_client", false); its_detail = v; startActivity(C); @Override public void onResume(){ super.onResume(); if(its_detail == true){ finish(); } }

Entonces, cada vez que hago clic en el botón de la Actividad C, hago la función "onResume ()" de la Actividad B y regreso a la Actividad A.


Puede volver a la actividad anterior simplemente llamando a finish () en la actividad en la que se encuentra. Tenga en cuenta cualquier código después de que se ejecute la llamada a finish (); puede hacer una devolución después de llamar a finish () para solucionarlo.

Si desea devolver los resultados a la actividad uno, al iniciar la actividad dos necesita:

startActivityForResults(myIntent, MY_REQUEST_CODE);

Dentro de tu actividad llamada, puedes obtener el Intent del parámetro onCreate () o usar

getIntent();

Para establecer devolver un resultado a la actividad uno, entonces en la actividad dos

setResult(Activity.RESULT_OK, MyIntentToReturn);

Si no tiene intención de regresar, solo diga

setResult(Activity.RESULT_OK);

Si la actividad tiene malos resultados, puede usar Activity.RESULT_CANCELED (esto se usa de forma predeterminada). Luego en la actividad uno lo haces

onActivityResult(int requestCode, int resultCode, Intent data) { // Handle the logic for the requestCode, resultCode and data returned... }

Para finalizar la actividad dos, use los mismos métodos con finish () como se describió anteriormente con sus resultados ya establecidos.


Simplemente no llame a finish() en su MainActivity entonces esto elimina la necesidad de Anular su onBackPressed() en su SecondActivity menos que esté haciendo otras cosas en esa función. Si sientes la "necesidad" de este botón de retroceso, simplemente puedes llamar a finish() en SecondActivity y eso te llevará a MainActivity siempre que no hayas llamado a finish() en él.


es posible que esté llamando a finish (); en el evento de botón de clic para que la actividad principal se cierre justo después de hacer clic en el botón y cuando regrese de la actividad siguiente, la aplicación salga porque la actividad principal ya está cerrada y no hay actividad activa.


prueba este código en lugar de finish :

onBackPressed();


si usas fragmentos debes usar

getActivity().onBackPressed();

si usa una sola actividad, puede usar

finish();


@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 Atrás de la barra de herramientas como en el botón Atrás de hardware .


Button edit = (Button) view.findViewById(R.id.yourButton); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(this, YourMainActivity.class); startActivity(intent); finish(); } });


{ getApplicationContext.finish(); }

Prueba este método ...