哪个项目我有一个问题。 我有一个操作栏。它有一个下拉列表,它有一个溢出按钮,另一个按钮位于中间。ActionBar.OnNavigationListener火灾无论中被点选动作条
因为我使用了一个下拉,我设置了操作栏使用此模式:
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
mActionBar.setListNavigationCallbacks(mActionBarNavigationAdapter, mOnNavigationListener);
mActionBar.setDisplayShowTitleEnabled(false);
我mOnNavifationListener设置调用REST API,这取决于项目我选择在下拉列表中。 这可以作为例外。
的问题是,如果我的溢出按钮点击以显示额外的选项(如设置或更重要的是,Signout),我仍然可以启动导航听众。 所以我想。好的,让我们尝试使用它们的位置或id在onNavigationItemSelected方法中作为参数传递的按钮进行区分。 所以我添加了一个if语句来检查位置参数。但是... 似乎溢出按钮的位置也为0(完全像在下拉列表中的第一项的位置,所以它通过了检查,并调用REST API这是不好的。 此外,第三个按钮(不下拉列表或溢出),有1的位置,有效地调用其他REST API ...
我不能找到一种方法,在操作栏中的项目区别开来。
有什么建议?
谢谢您很多为您的答案! 我正在使用appcompat_v7。通过“我仍然让导航侦听器激活”我的意思是,无论我在ActionBar中单击哪个项目,是下拉列表还是溢出按钮或其中的任何其他按钮,导航侦听器都会被调用,因此,里面的实现被执行,最终导致REST API调用。我试图找到一种方法来区分所有的按钮。目前,他们都会在i和l中返回0或1(我在onNavigationItemSelected中获得的参数(int i,long l)。 – 2014-08-30 11:43:18
但是您提出的作为解决方案的建议可能正是我需要的。实施它。谢谢! Btw我注册到您的高级行动酒吧技术网络研讨会。真的很期待它:) – 2014-08-30 11:54:36