当选定项保持不变时,不会调用ActionBar onNavigationItemSelected

时间:2013-06-27 07:58:43

标签: android android-actionbar android-spinner

我正在使用带有OnNavigationListener的ActionBar下拉导航。 要求是每次都触发onNavigationItemSelected()方法,同样在选择相同的下拉项时。默认的Android实现会阻止onNavigationItemSelected()方法在选择相同项目时运行。

我已经看到此要求的解决方案仅适用于标准Spinner实现herehere,但不适用于特定的ActionBar下拉导航实现。

任何有关如何克服此默认Android行为的建议都将非常受欢迎。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 

    mPosition = -1; 
    actionBar = getActionBar();  
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    ....

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.eventmenu, menu);

    SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(actionBar.getThemedContext(), R.array.s_events,
              android.R.layout.simple_spinner_dropdown_item);                 
    OnNavigationListener mOnNavigationListener = new OnNavigationListener() {                       

          @Override
          public boolean onNavigationItemSelected(int position, long itemId) {

              if (mPosition > -1) {     // to prevent opening the data entry fragment when the Events fragment is initially opened


                ...
                  startActivity(newEvent);                    
              }
              mPosition = position;
              return true;                            
          }       

    };                  
    actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);    
    return true;
}   

0 个答案:

没有答案