我正在使用实现了 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;
}