2013-10-19 53 views
1

我的微調控制器在我的主要活動中有一個onItemSelectedListener。我在onCreate方法中將偵聽器分配給微調對象。Android微調器onItemSelected偵聽器無法看到外部值

活動類有一個成員變量int iCurrentSelection。但無論我將iCurrentSelection設置爲活動中的任何位置,它在onItemSelected方法中始終爲空。所以布爾changed總是true即使沒有任何變化。

我不明白爲什麼!有人請賜教:-)

這裏是我的監聽器類:

OnItemSelectedListener oisl = new OnItemSelectedListener(){ 

    public void onItemSelected(AdapterView<?> arg0, View arg1, 
      int arg2, long arg3) { 

     boolean changed = iCurrentSelection != arg0.getSelectedItemPosition(); 
     stopTracks(); 
     if(changed){ 
       iCurrentSelection = arg0.getSelectedItemPostion(); 
       initTracks(actSpeed); 
     } 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    } 
} 
+0

調試你的代碼..它不能爲null ..爲什麼你需要arg0.getSelectedItemPosition(),因爲onItemSelected爲你提供arg2中當前選定的位置。 – bakriOnFire

回答

0

活動類有一個成員變量 「INT iCurrentSelection」。但 不管我在活動中設置iCurrentSelection在任何地方,它 總是空

在Java中的一個int值永遠不會空,我不這麼認爲這個問題是存在的!也許arg0.getSelectedItemPosition()的返回值是Null!所以比較一個整數值和一個Null對象將返回Null!

+0

@Mike M:是的,謝謝你的解釋,我已經編輯了 –

+0

這真是太好了,我很滿意你的評論,thx;) –

+0

感謝你的評論,夥計們。重點在於,每次活動重新繪製時都會調用onitemselected方法(如在方向更改上)。在我的聽衆中,我做了一些計算,強調CPU的很多。這些計算只需要在微調器中的值實際發生變化時完成。所以我需要一個變量來存儲以前的值。然後每當我監聽器方法被調用,我只是想檢查值是否已經改變。如果是這樣,我需要做計算。如果沒有,我只是想跳過這一點。 – AudioGuy

相關問題