Comment puis-je implémenter un onClickListener
personnalisé pour le bouton Accueil de la barre d'actions?
J'ai déjà effectué une getSupportActionBar().setDisplayHomeAsUpEnabled(true);
et je souhaite maintenant rediriger l'utilisateur vers une activité donnée au cas où le bouton Home serait cliqué.
J'ai essayé avec:
@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);
}
}
mais il n'entre jamais dans le onMenuItemClick
.
Fondamentalement, cela se fait comme dans ce lien mais cela n’entre toujours pas dans l’auditeur.
Correction: pas besoin d'utiliser un setOnMenuItemClickListener
. Il suffit d'appuyer sur le bouton pour créer et lancer l'activité à travers l'intention.
Merci beaucoup à tous pour votre aide!
J'utilise le actionBarSherlock , après avoir défini supportActionBar.setHomeButtonEnabled(true);
nous pouvons remplacer la méthode 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;
}
J'espère que ce travail pour vous ~~~ bonne chance
si quelqu'un d'autre a besoin de la solution
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == Android.R.id.home) {
onBackPressed(); return true;
}
return super.onOptionsItemSelected(item);
}
si nous utilisons la barre d'action donnée par le système, le code suivant fonctionne 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;
}
Vous devez activer explicitement l'action home si vous l'utilisez sur ICS. De les docs :
Remarque: si vous utilisez l'icône pour accéder à l'activité principale, prenez garde à ce que le symbole commençant par Android 4.0 (API de niveau 14)), vous devez activer explicitement l'icône en tant qu'élément d'action en appelant setHomeButtonEnabled. (true) (dans les versions précédentes, l’icône était activée par défaut comme élément d’action).
Le meilleur moyen de personnaliser la barre d’action onClickListener est onSupportNavigateUp ()
Ce code sera utile lien pour aider le code
répond dans la moitié de ce qui se passe. si onOptionsItemSelected
ne contrôle pas homeAsUp
, le bouton lorsque l'activité parent est définie dans le système manifest.xml passe à l'activité parent. utiliser comme ceci dans la balise d'activité:
<activity ... >
<meta-data
Android:name="Android.support.PARENT_ACTIVITY"
Android:value="com.activities.MainActivity" />
</activity>