2012-01-21 15 views
26

Actualmente estoy trabajando en una aplicación de Android. Me gustaría usar el ícono de la aplicación en la barra de acción para navegar a la actividad "hogar". Leí en la página this que todo lo que hay que hacer es agregar un onOptionsItemSelected y buscar el id android.R.id.home.El ícono de la aplicación haciendo clic no activa onOptionsItemSelected()

Este es el código que he implementado en mi actividad donde quiero presionar el icono de la aplicación para volver al HomeActivity.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case android.R.id.home: 
     Intent intent = new Intent(this, HomeActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

Sin embargo, no sucede nada. Al depurar, puedo ver que al hacer clic en el icono no se activa el onOptionsItemSelected(). ¿Tengo que hacer algo con el ícono en alguna parte? A partir de ahora, todo está predeterminado, sólo esta en el AndroidManifest.xml

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
+0

me han tratado sólo ha de responder al icono de la barra de acciones en una actividad que tenía un menú de opciones. Agregue temporalmente un menú de opciones y vea si eso cambia el comportamiento que ve. – CommonsWare

+0

Considere también pasar el indicador ['FLAG_ACTIVITY_SINGLE_TOP' que evita reiniciar la actividad] (http://stackoverflow.com/a/18658364/356895). – JJD

+2

Mi problema era que estaba en 'onOptionsItemSelected' Tenía' R.id.home' en lugar de 'android.R.id.home' ¡me volvía loco! – mbwasi

Respuesta

40

Para los paquetes que apuntan a nivel de API de 14 en adelante, necesita habilitar el botón de inicio llamando setHomeButtonEnabled()

En su onCreate, añada lo siguiente:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
+4

También quería agregar esto para aquellos que usan ActionBarSherlock. 'getSupportActionBar(). setHomeButtonEnabled (true);' – euniceadu

4

Si utiliza Android nuevo soporte-actionbar (AppCompat) que necesita para hacer las llamadas.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
getSupportActionBar().setHomeButtonEnabled(true); 
+2

El getActionBar() devuelve nulo con AppCompat ... – bk138

0

no sé si tenemos el mismo problema.

pero, yo estaba en ese problema y ahora resuelto ..

Cómo se puede añadir

case android.R.id.home: 
    Intent intent = new Intent(this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 

en HomeActivity? esto es falso ..

debe poner ese código en su secondActivity .. porque su botón de inicio en secondActivity, no HomeActivity

case android.R.id.home: 
    NavUtils.navigateUpFromSameTask(this); 
    true; 

esperanza que esto le ayuda

Cuestiones relacionadas