Android 在ActionBar中添加spinner

按照官网

http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown  和翻译版

http://hi.baidu.com/xmjmcai/item/6a05d50f260d45c49157180c 

总是出一个问题。

        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.academic_list_action_spinner,
                android.R.layout.simple_spinner_dropdown_item);
        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        OnNavigationListener mOnNavigationListener = new OnNavigationListener(){

            @Override
            public boolean onNavigationItemSelected(int itemPosition,
                    long itemId) {
                // TODO Auto-generated method stub
                return false;
            }
            
        };
        actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener );

最后一步总是报错,也不知什么原因。后来看到其他实现actionbar上的spinner的代码,知道了解决办法。

SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.academic_list_action_spinner,
                android.R.layout.simple_spinner_dropdown_item);
        ActionBar actionBar = getActivity().getActionBar();
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        
        class OnNavigationListener implements ActionBar.OnNavigationListener{

            @Override
            public boolean onNavigationItemSelected(int itemPosition,
                    long itemId) {
                // TODO Auto-generated method stub
                Toast.makeText(getActivity(), ""+itemPosition+"   "+itemId, Toast.LENGTH_SHORT).show();
                return false;
            }
            
        }
        
        actionBar.setListNavigationCallbacks(mSpinnerAdapter, new OnNavigationListener() );

 

我本来以为Java的这两种定义对象是一样的,现在看来还是有区别的,至于到底是什么原因我还不清楚。反正这样是可以解决的。

还有一个问题,就是有一次总是定义完设置完spinner之后,怎么都显示不出来,最后原因是因为没有setNavigationMode(),所以调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行。

 

 

posted @ 2013-06-25 15:41  小猴偷米  Views(2622)  Comments(0Edit  收藏  举报