我从原来的ActionBar更改为AppCompat Toolbar和setSupportActionBar(工具栏)。当我使用getSupportActionBar()和setDisplayHomeAsUpEnable(true)作为后箭头时,单击永远不会调用onOptionsItemSelected或任何其他侦听器方法。
我必须为它实现一些特殊的侦听器吗?在一切顺利之前。
编辑:初始化操作栏:
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
mActionBar.setHomeButtonEnabled(true);
用片段替换内容后,我这样做:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mDrawerToggle.setDrawerIndicatorEnabled(false);
mActionBar.setDisplayHomeAsUpEnabled(true);
我在使用setSupportActionBar()方法时遇到了几个问题。它也会忽略某些颜色主题,因此无法设置后向箭头或溢出图标的样式(不记得是哪个)。我刚刚取消了ActionBar集成,并以本机方式使用工具栏。因此,作为一种替代方法,您可以按如下方式进行操作。
只需像通常一样在布局中包含工具栏,假设它使用@id/tools bar的id。
然后,在代码中:
_toolbar = (Toolbar) findViewById(R.id.toolbar);
_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNavButtonPress();
}
});
_toolbar.setOnMenuItemClickListener(_menuItemClickListener);
_toolbar.inflateMenu(R.menu.message_list_menu);
Menu menu = _toolbar.getMenu();
在这种情况下,\u menuItemClickListener几乎可以是您当前重命名的onOptions ItemSelected()方法。您不必再检查菜单是否为空。
要从菜单中删除项目,只需调用菜单-
最后一点,要使它全部工作,您必须完全禁用操作栏并将其从样式中删除。
我必须为抽屉切换实现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);
}
});
这解决了我的问题。
我知道这个问题已经得到了回答,但是经过两天的沮丧,我找到了问题的真正原因。
看看ActionBarDrawerTokgle留档:https://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html
注意那里的两个构造器。我的错误是,我使用的是第二个构造函数,它将工具栏作为参数。我花了很长时间才注意到Constructor文档中的最后一行:“如果要将工具栏设置为活动的操作栏,请使用ActionBarDrawerToggle(Activity,DrawerLayout,int,int)。”
使用第一个构造函数后,调用了onOptionsItemSelected(),没有出现任何问题。
别忘了调用ActionBarDrawerToggle。从活动中选择OnConfiguration Changed()和OnOptions ItemSelected(),如最后一部分所述:http://developer.android.com/training/implementing-navigation/nav-drawer.html
我有一个动作和一个碎片。活动没有膨胀的菜单,而片段有一个带有两个按钮的菜单。片段菜单是可见的,但按钮没有任何反应时,轻点。在调试过程中,我可以看到Fragment和Activity的onCreateOptionsMenu()都被调用,但是当点击按钮时,没有onOptionsItemSelected()被调用,既没有从Activity调用,也没有从Fragment调用。
尝试在和中捕获它,如 并且我在中有。
这似乎不再起作用了。SetSupportActionBar需要一个AndroidX.appcompat.widget.Toolbar类型的参数,它不能用于Android.support.v7.widget.Toolbar。另外,如果我使用AndroidX工具栏而不是V7工具栏,它仍然无法工作。 有人面临类似的问题吗?
我可以在工具栏中看到后退按钮,但当我单击时,什么都没有发生。它不会,但当我删除的整个实现时,后退按钮工作正常。我需要在需要时在两者之间切换。提前感谢。
我知道我做错了什么。但我找不到这里有什么问题。请帮助我正确理解这一点。
底部导航,有图标和文字,响应鼠标事件和当前页面导航 <nav class="bar bar-tab"> <a class="tab-item external active" href="#"> <span class="icon icon-home"></span> <span class="tab-label">文案</span> </a> <a clas