Inf*_*0re 41 android toolbar android-appcompat android-actionbar android-5.0-lollipop
我从原来的ActionBar更改为AppCompat工具栏和setSupportActionBar(工具栏).当我使用getSupportActionBar()和setDisplayHomeAsUpEnabled(true)作为后退箭头时,单击从不调用onOptionsItemSelected或任何其他侦听器方法.
我必须为它实现一些特殊的监听器吗?一切都工作得很好.
编辑:初始化ActionBar:
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
mActionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
在用Fragment替换内容后,我这样做:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mDrawerToggle.setDrawerIndicatorEnabled(false);
mActionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
And*_*psa 116
我知道这个问题已得到解答,但经过2天的挫折后我找到了问题的真正原因.
请查看ActionBarDrawerToggle文档:https: //developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html
注意那里的两个构造函数.我的错误是我正在使用第二个构造函数,它将工具栏作为参数.我花了很长时间才注意到consturctor文档中的最后一行:" 如果要将工具栏设置为活动的ActionBar,请使用ActionBarDrawerToggle(Activity,DrawerLayout,int,int). "
使用第一个构造函数onOptionsItemSelected()后调用没有问题.
不要忘记从您的活动中调用ActionBarDrawerToggle.onConfigurationChanged()和onOptionsItemSelected(),如上一部分所述:http://developer.android.com/training/implementing-navigation/nav-drawer.html
Inf*_*0re 28
我必须为DrawerToggle实现一个OnClickListener:
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popStackIfNeeded();
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mActionBar.setDisplayHomeAsUpEnabled(false);
mDrawerToggle.setDrawerIndicatorEnabled(true);
}
});
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题.