我在操作栏中使用微调器进行导航。问题是,当所选项目与先前选择的项目相同时,不会调用 onNavigationItemSelected 。 我查看了类似问题here和here以及here 但是它们都没有提供工作解决方案,特定于操作栏中所需的下拉导航。
我使用以下代码:
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时执行代码。 我想知道是否有更优雅,推荐的方式呢?
但是,关键问题是,当重新选择Action Bar中相同的微调项时,如何生成对onNavigationItemSelected的回调?