¿Cómo puedo implementar una costumbre onClickListener
para el botón Inicio de la barra de acción?
Ya hice un getSupportActionBar().setDisplayHomeAsUpEnabled(true);
y ahora quiero redirigir al usuario a una determinada actividad en caso de que se haga clic en el botón Inicio.
Lo intenté con:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Intent i = new Intent();
i.setClass(BestemmingActivity.this, StartActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
return true;
}
});
default:
return super.onOptionsItemSelected(item);
}
}
pero nunca entra en el onMenuItemClick
.
Básicamente, se hace como en este enlace pero aún no entra en el oyente.
return true;
return true;
al final delif
bloque, entonces es correctoYo uso actionBarSherlock , después de que establezcamos
supportActionBar.setHomeButtonEnabled(true);
podemos anular el método onMenuItemSelected:
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case android.R.id.home: toggle(); // Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show(); break; } return true; }
Espero que esto funcione para ti ~~~ buena suerte
fuente
si usamos la barra de acción dada por el sistema, el siguiente código funciona bien
getActionBar().setHomeButtonEnabled(true); @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case android.R.id.home: //do your action here. break; } return true; }
fuente
Corregido: no es necesario utilizar un
setOnMenuItemClickListener
. Con solo presionar el botón, crea y lanza la actividad a través de la intención.¡Muchas gracias a todos por vuestra ayuda!
fuente
onOptionsItemSelected()
automáticamente. No es necesario instalarlo manualmente (eso en realidad puede romper cosas).responde en la mitad de lo que está sucediendo. si
onOptionsItemSelected
no, elhomeAsUp
botón de control cuando la actividad principal se establece en el sistema manifest.xml va a la actividad principal. usar así en la etiqueta de actividad:<activity ... > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.activities.MainActivity" /> </activity>
fuente
Debe habilitar explícitamente la acción de inicio si se ejecuta en ICS. De los documentos :
fuente
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
y ungetSupportActionBar().setHomeButtonEnabled(true);
La mejor manera de personalizar la barra de acción enClickListener es onSupportNavigateUp ()
Este código será un enlace útil para ayudar al código
fuente
debe eliminar su Override onOptionsItemSelected y reemplazar su onCreateOptionsMenu con este código
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_action_bar_finish_order_stop, menu); menu.getItem(0).setOnMenuItemClickListener(new FinishOrderStopListener(this, getApplication(), selectedChild)); return true; }
fuente