4

OnNavigationListener を実装した ActionBar ドロップダウン ナビゲーションを使用しています。要件は、同じドロップダウン項目が選択されたときにも、毎回 onNavigationItemSelected() メソッドを起動することです。デフォルトの Android 実装では、同じ項目が選択されたときに onNavigationItemSelected() メソッドが実行されません。

この要件に対する解決策は、標準の Spinner 実装のhereおよびhereについてのみ見ましたが、特定の 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