【发布时间】:2016-07-06 17:53:02
【问题描述】:
我正在设置一个装有汉堡包的抽屉,当我打开一个片段时,我想移除汉堡包并将其替换为调用onBackPressed() 的箭头。
发生的情况是汉堡包被箭头替换,但箭头上的侦听器没有被调用。如果我完全删除 ActionBarDrawerToggle 它将起作用。我该如何解决这个问题?
打开新片段:
Fragment_Subjects frag = new Fragment_Subjects();
fm.beginTransaction()
.replace(R.id.mainContainer, frag)
.addToBackStack(null)
.commit();
toggle.setDrawerIndicatorEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
设置抽屉切换:
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); //back arrow works when this line is removed
assert drawer != null;
drawer.setDrawerListener(toggle);
toggle.syncState();
后退箭头监听器:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
onBackPressed:
@Override
public void onBackPressed() {
if(drawer.isDrawerOpen(Gravity.START)){
drawer.closeDrawer(Gravity.START);
}else{
super.onBackPressed();
}
}
【问题讨论】:
-
覆盖
onBackPressed()并调用finish()然后尝试。 -
还是不行
-
你也可以试试
toolbar.setNavigationOnClickListener(view -> onBackPressed()) -
谢谢你的工作,请随时写一个答案,以便我接受它