0
getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.actionOptions, android.R.layout.simple_dropdown_item_1line);
        Calendar c = Calendar.getInstance();
        int hours = c.get(Calendar.HOUR_OF_DAY);
        if(hours<6)
        {
            getSupportActionBar().setSelectedNavigationItem(1);
            supportInvalidateOptionsMenu();
        }
        else if(hours>=21)
        {
            getSupportActionBar().setSelectedNavigationItem(1);
            supportInvalidateOptionsMenu();
        }
        else
        {
            getSupportActionBar().setSelectedNavigationItem(0);
            supportInvalidateOptionsMenu();
        }

        OnNavigationListener mOnNavigationListener = new OnNavigationListener() {

            @Override
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                // TODO Auto-generated method stub
                switch(itemPosition){
                case 0:
                    isMode = "dMode";
                    break;
                case 1:
                    isMode = "nMode";
                    break;
                default:
                }
                return false;
            }
        };

getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);

在下面的代码中,我试图根据一天中的时间在操作栏中设置下拉菜单。如果是在晚上 9 点到下午 6 点之间,则设置模式 A,否则设置模式 B。根据默认定义,模式A设置在索引位置1,模式B设置在索引位置2。但是代码似乎不起作用。请帮忙。我确实尝试了没有supportInvalidateOptionsMenu(). 它根本不起作用。

4

1 回答 1

1

您需要将适配器添加到操作栏。

像这样:

getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter , this);

所以操作栏知道列表中实际显示的内容。

此外,您还需要将标题设置为 false

getSupportActionBar().setDisplayShowTitleEnabled(false);

另外对于适配器,您应该使用正确的上下文:

Context context = getSupportActionBar().getThemedContext();

因此

 SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(context, R.array.actionOptions, android.R.layout.simple_dropdown_item_1line);
于 2013-05-03T09:57:29.793 回答