我正在使用setSupportActionBar创建一个带有我自己的工具栏的抽屉。以前我用的是
new ActionBarDrawerToggle(this, drawer, toolbar, "open", "close");
但是因为它是用我自己的工具栏实现的,我的onOptionsItemSelected()方法没有触发,所以使用Andrei Lupsa的答案here我从docs更改为以下构造函数,并且方法开始了再次工作。
new ActionBarDrawerToggle(this, drawer, "open", "close");
不幸的是,现在抽屉听众不再工作了。它会在条形图上显示汉堡包图标,但在按下时不会打开。这是实施:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerToggle = new ActionBarDrawerToggle(
this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(drawerToggle);
drawerToggle.syncState();
我的AndroidManifest使用以下样式:
<style name="AppTheme.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
但我也试过
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
因为我认为它与ActionBarDrawerToggle有关,不再识别工具栏,但如果是这种情况,那么为什么汉堡包图标仍会显示?
修改添加onOptionsItemSelected()
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id) {
case R.id.action_settings:
break;
case android.R.id.home:
getSupportFragmentManager().popBackStack();
break;
}
return super.onOptionsItemSelected(item);
}
android.R.id.home
创建时仅显示BackStack&gt; 0,所以当在基本活动时,抽屉会显示,当进入下一个片段时,抽屉将切换到主箭头,并能够将用户带回基地。