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;
}