我正在使用操作栏中的微调器进行导航。问题是,当所选项目与先前选择的项目相同时,不会调用onNavigationItemSelected 。我在这里、这里和这里查看了类似的问题,但它们 都没有 提供有效的解决方案,具体到操作栏中所需的下拉导航。
我正在使用以下代码:
public class TestSpinner extends Activity implements
ActionBar.OnNavigationListener {
private Integer mPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getActionBar();
final String[] EventTypes = getResources().getStringArray(
R.array.spinner_items);
mPosition = -1;
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
actionBar.getThemedContext(),
android.R.layout.simple_spinner_item, android.R.id.text1,
EventTypes);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
actionBar.setListNavigationCallbacks(adapter, this);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
……
@Override
public boolean onNavigationItemSelected(int position, long id) {
if (mPosition > -1) {
mPosition = position;
// execute required code on spinner item selection
return true;
} else {
mPosition = 0;
return false;
}
}
请注意,我使用 mPosition 标志来防止 onNavigationItemSelected 在首次创建操作栏时执行代码。我想知道是否有更优雅、更推荐的方法?
但是,关键问题是,当重新选择 Action Bar 中的同一个微调器项时,如何生成对 onNavigationItemSelected 的回调?