我有一个带有 appbar 的活动和一个带有 appbar 的全屏对话框片段(该对话框是从活动中调用的)。当按下活动的主页按钮时,我设置了一些操作,当按下主页按钮和对话框片段时,它应该关闭对话框。我注意到这两个按钮具有相同的 id (android.R.id.home)。并且显然在调用方法“onOptionsItemSelected”时存在冲突,因为当我按下对话框的主页按钮时它不起作用,但是如果删除活动上的代码部分(如果 id == android.R .id.home) 它工作正常并且对话框关闭。我应该怎么办?。有没有办法防止这种冲突,也许为主页按钮设置一个不同的 id?
这是活动的方法
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);
}
这是对话片段的方法
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);
}