0
我對appbar和一個帶appbar的fullsecreen對話框片段(該對話框是從活動中調用的)有一個活性。 當按下活動的主頁按鈕時,我已經設置了一些操作,當按下對話框片段的主頁按鈕時,它應該關閉對話框。 我注意到兩個按鈕有相同的id(android.R.id.home)。而且當調用方法「onOptionsItemSelected」時會發生衝突,因爲當我按下對話框的home按鈕時,它不起作用,但是如果刪除活動上的代碼部分(如果id == android.R .id.home) 它工作正常,對話框關閉。 我該怎麼做?有沒有辦法來防止這種衝突,也許爲主頁按鈕設置一個不同的ID?活動主頁按鈕和Dialogfragment主頁按鈕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);
}
的方法,這是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);
}