5

我正在使用操作栏中的微调器进行导航。问题是,当所选项目与先前选择的项目相同时,不会调用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 的回调?

4

0 回答 0