El botón de retroceso de Android no vuelve a la actividad anterior

Tengo una aplicación que tiene dos actividades: MainActivity y SettingsActivity. MainActivity tiene un menú con un único elemento de menú Configuración. Cuando se hace clic en este elemento de menú, se inicia la ConfiguraciónActividad con una intención. Después de que se inicie la actividad, hago clic en el botón Atrás en la esquina superior izquierda y no pasa nada. Asumí desde que comencé la actividad usando una intención, la pila de la actividad sería manejada automáticamente. Quiero volver a MainActivity. ¿Me equivoco en esta suposición?

MainActivity.onMenuItemSelected

public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemID = item.getItemId(); if(itemID == R.id.settings) { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); } return true; } 

AjustesActividad

 public class SettingsActivity extends PreferenceActivity { public static final String TEST = "test"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } 

2 Solutions collect form web for “El botón de retroceso de Android no vuelve a la actividad anterior”

Dentro de su SettingsActivity debe anular onOptionsItemSelected para habilitar el botón de retroceso en la esquina superior izquierda de la barra de acciones para volver atrás. No sabe por sí mismo que lo que tiene que hacer al hacer clic. Dentro del caso android.R.id.home puedes llamar a finish() . Esto terminará su actividad actual y volverá a MainActivity que lo inició. P.ej:

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

Sólo para completar, para habilitar el botón de inicio, puede agregar lo siguiente en su onCreate() de SettingsActivity :

 getActionBar().setDisplayHomeAsUpEnabled(true); 

Según los documentos de setDisplayHomeAsUpEnabled ()

It is to show the user that selecting home will return one level up rather than to the top level of the app.

Espero que esto ayude.

Simplemente agregue estas líneas en su methord OnCreate

  getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 

Y reemplaza este método para agregar funcionalidad a tu botón de retroceso:

  @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } else if(id==android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } 

Espero que te ayude

  • Mantenga la barra de acciones visualizada al cambiar PreferenceScreen
  • Inicio de Configuración Actividad de Preferencias XML funciona en 2.x pero no en 4.x
  • Respondiendo a las actualizaciones de preferencias en Android
  • ¿PreferenceFragment con el fondo transparente?
  • Compatibilidad para SwitchPreference (pre ICS)?
  • Preferencias de número en la actividad de preferencias en Android
  • Uso de findviewbyid en preferenciaactividad
  • ¿Por qué Kit Kat requiere el uso de isValidFragment?
  • Implementación de "color selector" de Android PreferenceScreen
  • ¿Cómo establecer el valor RingtonePreference del código?
  • Problemas con pantallas de preferencias de doble panel
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.