Para habilitar el botón de retroceso ActionBar, obviamente necesita una ActionBar en su Actividad. Esto lo establece el tema que está utilizando. Puede configurar el tema para su Actividad en el AndroidManfiest.xml. Si está utilizando, por ejemplo, el @android:style/Theme.NoTitleBartema, no tiene una barra de acciones. En este caso, la llamada a getActionBar()volverá nulo. Así que primero asegúrate de tener una ActionBar.
El siguiente paso es configurar la android:parentActivityNameactividad que desea navegar si presiona el botón Atrás. Esto debería hacerse en el AndroidManifest.xmltambién.
Ahora puede habilitar el botón de retroceso en el onCreatemétodo de su actividad "secundaria".
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Ahora debe implementar la lógica para el botón Atrás. Simplemente anule el onOptionsItemSelectedmétodo en su actividad "secundaria" y verifique la identificación del botón Atrás que está android.R.id.home.
Ahora puede activar el método NavUtils.navigateUpFromSameTask(this); PERO si no ha especificado el android:parentActivityNameen usted, AndroidManifest.xmlesto bloqueará su aplicación.
A veces esto es lo que quieres porque te recuerda que olvidaste "algo". Entonces, si desea evitar esto, puede verificar si su actividad tiene un padre utilizando el getParentActivityIntent()método. Si esto devuelve nulo, no ha especificado el padre.
En este caso, puede activar el onBackPressed()método que básicamente hace lo mismo que si el usuario presionara el botón Atrás en el dispositivo. Una buena implementación que nunca bloquea tu aplicación sería:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Tenga en cuenta que la animación que ve el usuario es diferente entre NavUtils.navigateUpFromSameTask(this);y onBackPressed().
Depende de usted qué camino tomar, pero la solución me pareció útil, especialmente si utiliza una clase base para todas sus actividades.
getActionBar().setDisplayHomeAsUpEnabled(true);en onCreate yswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}enonOptionsItemSelected? ambos en ServicesViewActivity