J'ai une acivity avec appbar et un dialogue fullsecreen avec appbar (cette boîte de dialogue est appelée à partir de l'activité). J'ai mis une certaine action quand le bouton d'accueil de l'activité est pressé, et quand le bouton d'accueil et le dialogue sont enfoncés il devrait fermer la boîte de dialogue. J'ai remarqué que les deux boutons ont le même id (android.R.id.home). et aparently il y a un conflit quand la méthode "onOptionsItemSelected" est appelée parce que quand j'appuie sur le bouton d'accueil de la boîte de dialogue cela ne fonctionne pas, mais si un enlève la partie du code sur l'activité (si id == android.R .id.home) cela fonctionne bien et la boîte de dialogue rejeter. Que dois-je faire? est-il possible d'empêcher ce conflit, peut-être définir un identifiant différent pour le bouton d'accueil?Conflit entre le bouton d'accueil de l'activité et l'ID du bouton d'accueil Dialogfragment
c'est la méthode de l'activité
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_logout) {
exitApp();
return true;
}
else if ((id == android.R.id.home) && searchActivated) {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
toggle.syncState();
searchActivated=false;
reload_fragment_data();
return true;
}
else if ((id == android.R.id.home) && (!searchActivated))
{
drawer.openDrawer(GravityCompat.START); // OPEN DRAWER
return true;
}
return super.onOptionsItemSelected(item);
}
c'est la méthode de la dialogfragment
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_next) {
pager.setCurrentItem(pager.getCurrentItem() + 1);
updateTitle();
return true;
} else if (id==R.id.action_previous)
{
pager.setCurrentItem(pager.getCurrentItem() - 1);
updateTitle();
return true;
}
else if (id == android.R.id.home) {
dismiss();
return true;
}
return super.onOptionsItemSelected(item);
}