【问题标题】:Android: Sherlock action bar drop downAndroid:Sherlock 操作栏下拉
【发布时间】:2012-09-24 23:13:09
【问题描述】:

我正在尝试实现一个下拉列表作为 Android 中操作栏的导航。 我可以看到下拉列表和项目,但我无法获得点击事件。

我不确定自己缺少什么,因为我正在学习 http://developer.android.com/guide/topics/ui/actionbar.html 中的教程

这是我的代码:

public void onCreate(Bundle savedInstanceState) {
        OnNavigationListener mOnNavigationListener;
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.info_layout);
        // getSupportActionBar().setHomeButtonEnabled(true);
         getSupportActionBar().setDisplayShowTitleEnabled(false);

        getSupportActionBar().setNavigationMode(getSupportActionBar().NAVIGATION_MODE_LIST);
        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.navigation_array, android.R.layout.simple_dropdown_item_1line);
        mOnNavigationListener = new OnNavigationListener() {
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                switch (itemPosition) {
                case 1:
                    Intent i = new Intent();
                    i.setClass(getApplicationContext(), ZoekAndBoekActivity.class);
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    break;
                }
                // return super.onOptionsItemSelected(itemPosition);
                return true;
            }
        };
        getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);
    }

提前非常感谢!

【问题讨论】:

    标签: android drop-down-menu actionlistener actionbarsherlock


    【解决方案1】:

    您确定没有收到点击事件吗?您正在创建意图,但没有对它做任何事情。试试这样的:

    switch (itemPosition) {
        case 1:
            Intent i = new Intent();
            i.setClass(getApplicationContext(), ZoekAndBoekActivity.class);
            startActivity(i);
            break;
        ...
    }
    

    或添加写入日志以确保:

    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
        Log.d("SomeTag", "Get click event at position: " + itemPosition);
        switch (itemPosition) {
            ...
        }
    }
    

    当您单击项目时,在 logcat 输出中查看带有“SomeTag”的消息。

    【讨论】:

    • 什么都不做,甚至没有进入onNavigationItemSelected
    • @noloman 如果您的解决方案与此处给出的不同,如果您发布它会对其他人有所帮助。
    • 如何获取所选位置的项目?
    【解决方案2】:

    我认为switch case里面的return语句一定是假的,而且你的case必须有括号。希望对你有帮助:)))

    【讨论】:

    • case语句不需要括号,每个case都需要返回true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多