4

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

我只在此处此处看到了针对标准 Spinner 实现的此要求的解决方案,但不适用于特定的 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;
}   
4

0 回答 0