android action bar onNavigationItemSelected

后端 未结 5 2151
死守一世寂寞
死守一世寂寞 2020-12-05 20:01

I\'m developing for android 3+

In my action bar i have a drop-down list(see how to hide/unhide the actionbar list on android 3? for the dropdown i intend). The probl

5条回答
  •  甜味超标
    2020-12-05 20:31

    I have viewpager with fragments and I need set custom action bar for every fragment in pager In desired page I have navigation list, fragment fires onNavigationItemSelected automatically when I swipe pages, want to avoid this behavior and run tasks only if I selected nav item manually.

    public class MyFragment extends Fragment implements ActionBar.OnNavigationListener {
    
        private boolead fireReady = false;
    
         @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
    
            // every time make it false, this method invoked on swipe action
            fireReady = false; 
    
            if (isVisibleToUser) {
                // setup actionbar, you also can setup action bar in activity
                String[] array = getActivity().getResources().getStringArray(R.array.users_order);
                ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_item, array);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
                getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
                getActivity().getActionBar().setListNavigationCallbacks(adapter, this);
            }
    
        }
    
         @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    
            if (fireReady) {
                // task fire only when you directly press navigation item
                UsersTask task = new UsersTask(getActivity());
                task.setTaskListener(this);
                task.execute(usersUrls[itemPosition]);
            } else {
                // make it true first time when page displayed
                fireReady = true;
            }
            return false;
        }
    
    }
    
    }
    

提交回复
热议问题