Android - 如何在重新选择微调器项时调用onNavigationItemSelected

时间:2013-05-21 04:40:47

标签: android android-actionbar spinner

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

0 个答案:

没有答案