2013-02-03 62 views
2

我正在使用ActionBarCompat來創建一個操作欄。我可以使用ArrayAdapter在其中顯示下拉導航列表。但是,我想附加一個OnNavigationListener它,這就是我遇到這個問題:它沒有任何效果。當我第一次將它附加到操作欄時,它只會被觸發一次。這是我的OnNavigationListener實現:Android OnNavigationListener未被調用

class RaditazActionBarListener implements ActionBar.OnNavigationListener { 
    @Override 
    public boolean onNavigationItemSelected(int itemPosition, long itemId) { 
     Intent parentActivityIntent = new Intent(ctx, Player.class); 
     startActivity(parentActivityIntent); 
     return true; 
} 

,這裏是如何,我將其連接到我的行動吧:

getActionBar().setListNavigationCallbacks(mySpinnerAdapter, new RaditazActionBarListener()); 

任何想法,爲什麼當我選擇在下拉列表中的項目聽者不被觸發?

感謝, 伊戈爾

回答

4

由於是mySpinnerAdapter沒有代碼是很難猜測:

  1. 也許你想選擇一個已經選定的項目(這將給沒有回調)。
  2. 也許這個項目你想選擇在列表中唯一一個(從OnNavigationOtemSelected()代碼猜測)
  3. 一堆其他可能的原因
+0

是的,這是在列表中的唯一項目。但是不應該選擇工作嗎? –

+2

不,它不應該。僅噹噹前選擇*改變時,纔會調用監聽器*。爲了覆蓋常見微調器的這種行爲,可以使用[在此建議]的方法(http://stackoverflow.com/questions/10854329/spinner-onitemselected-not-called-when-selected-item-remains-the-same)。如果您正在使用它,* ActionBarSherlock *的源代碼可以被修改。如果沒有 - 剩下的唯一選擇是使用自定義佈局作爲操作欄(這不是很難實現)。 –