【问题标题】:Android OnNavigationListener not being called未调用 Android OnNavigationListener
【发布时间】:2013-01-18 09:48:21
【问题描述】:

我正在使用 ActionBarCompat 创建一个操作栏。我可以使用 ArrayAdapter 在其中显示下拉导航列表。但是,我想给它附加一个 OnNavigationListener,这就是我遇到这个问题的地方:它没有效果。当我第一次将它附加到操作栏时,它只会被触发一次。这是我的 OnNavigationListener 实现:

class RaditazActionBarListener implements ActionBar.OnNavigationListener {
    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        Intent parentActivityIntent = new Intent(ctx, Player.class);
        startActivity(parentActivityIntent);
        return true;
 }

下面是我将它附加到我的操作栏的方式:

getActionBar().setListNavigationCallbacks(mySpinnerAdapter, new RaditazActionBarListener());

知道为什么当我在下拉列表中选择项目时没有触发侦听器吗?

谢谢, 伊戈尔

【问题讨论】:

    标签: android-actionbar-compat


    【解决方案1】:

    由于没有mySpinnerAdapter 的代码,因此很难猜测:

    1. 也许您正试图选择一个已选择的项目(不会给出回调)。
    2. 也许您尝试选择的此项是列表中唯一的一项(根据您的OnNavigationOtemSelected() 代码猜测)
    3. 一堆其他可能的原因

    【讨论】:

    • 是的,这是列表中的唯一一项。但是选择不应该起作用吗?
    • 不,不应该。仅当当前选择更改 时才会调用侦听器。要覆盖普通 Spinner 的这种行为,可以使用方法 suggested hereActionBarSherlock 的源代码如果你正在使用可以修改。如果没有 - 剩下的唯一选择是为操作栏使用自定义布局(这不是很难实现)。
    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多