El botón de retroceso de la barra de acción no se va a volver en Android

Estoy desarrollando una aplicación para Android. Estoy usando ActionBar con AppCompactActivity. En mi aplicación, agrego el botón de nuevo a la barra de acción. Pero cuando hago clic en él, no va a volver a la actividad anterior. Por ejemplo, comienzo la actividad 2 de la actividad 1. La actividad 2 contiene la barra de acción con el botón Atrás. Pero cuando hago clic en el botón de la barra de acción de la actividad 2, no volveré a la actividad 1.

Así es como configuro la barra de acción para la actividad 2

public class EditProfileActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_profile); Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); setSupportActionBar(toolbar); setTitle("Edit Profile"); ActionBar actionBar= getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } } 

Así es como comencé la actividad 2 de la actividad 1

 Intent i = new Intent(MainActivity.this,SecondActivity.class); startActivity(i); 

No volveré cuando haga clic en este botón

Introduzca aquí la descripción de la imagen

Por favor, ayúdame por qué no va a volver? Por favor, ayúdame a arreglar mi código. Gracias.

Agregue lo siguiente a su actividad. Debe manejar el evento de clic del botón Atrás.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

Aquí tienes 2 opciones:

A) proporcione un parentActivityName a su etiqueta SecondActivity en AndroidManifest.xml como esto:

  <activity ... android:name=".SecondActivity" android:parentActivityName=".MainActivity" > 

B) anula onOptionsItemSelected en SecondActivity como este:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

Yo sugeriría leer esta guía para más información.

Tienes que sobrescribir onOptionsItemSelected y comprobar el id del elemento, si es igual a id del botón de inicio, solo llama al método onBackPressed.

 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); } return super.onOptionsItemSelected(item); } 

Tienes que definir qué debe suceder cuando haces clic en ese botón, esto se puede hacer en el método onOptionsItemSelected de tu segunda actividad. Observe la constante android.R.id.home que hace referencia al botón de retroceso de la actividad que desea utilizar.

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); //close the activty return true; } return super.onOptionsItemSelected(item); } 

Aquí está tu código

  public class EditProfileActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_profile); Toolbar toolbar = (Toolbar)findViewById(R.id.profile_action_toolbar); setSupportActionBar(toolbar); setTitle("Edit Profile"); ActionBar actionBar= getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (item.getItemId() == android.R.id.home) { finish(); } return super.onOptionsItemSelected(item); } } 

Aquí está la respuesta correcta desde el lado de la programación de mejores prácticas

https://stackoverflow.com/a/24033351/5439793

En primer lugar, vea siempre las directrices de Android http://developer.android.com/intl/pt-br/design/patterns/navigation.html para evitar que Google bloquee las aplicaciones de Android.

Intenta agregar este código en tu Actividad

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. return true; } @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { case android.R.id.home: onBackPressed(); break; } return super.onOptionsItemSelected(menuItem); } @Override public void onBackPressed() { super.onBackPressed(); } 
  • Haga clic en el botón Done de una barra de acciones contextuales
  • Las pestañas de navegación de Android ActionBar parecen diferentes en teléfonos y tabletas
  • Android: cambia el color de la línea debajo de ActionBar
  • Icono del menú que no se muestra en la barra de acción
  • Personalizar Android ActionBar
  • Evita cancelar el modo de acción pulsando el botón de retroceso
  • ¿Cómo saber si el icono de acción de una barra de acción de Android está en la barra superior o en la barra inferior (dividida)?
  • Barra de herramientas alinear el título en el centro con el botón Atrás
  • ClassCastException: android.support.v7.widget.ShareActionProvider
  • Mostrar el botón de arriba / atrás en android anidado PreferenceScreen?
  • ¿Puedo desactivar la navegación de ActionBar Spinner?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.