2011-04-22 46 views
4

在我的Android應用程序中,我有一個聲音,當某個選擇已經從微調器中進行時我想播放,但是我希望它能在用戶真正進行正確選擇時播放(或之後)。我的問題是,儘管聲音在進行正確選擇時播放,但只要該選擇保持選定狀態,它也會在每次應用程序啓動時播放聲音,而應該只在選定時播放聲音。這裏是我現在的代碼:幫助選擇微調選項的時間

fitnessSpinner = (Spinner) findViewById(R.id.fitness_spinner); 
    ArrayAdapter adapter4 = ArrayAdapter.createFromResource( 
     this, R.array.fitness_array, android.R.layout.simple_spinner_item); 
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    fitnessSpinner.setAdapter(adapter4); 

    fitnessSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long i) { 
      Log.d("test", "p: " + position + " " + i); 
      if(position == 0) { 
       //First Entry 
       MediaPlayer mp = MediaPlayer.create(mContext, R.raw.bowchica); 
       mp.start(); 
      } if(position == 4) { 
       MediaPlayer mp = MediaPlayer.create(mContext, R.raw.debbie2); 
       mp.start(); 
      } 
     } 

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


     } 

    }); 

我該如何讓聲音在應用程序啓動時停止播放?我是否應該將整個fitnessSpinner.setOnItemSelectedListener ...包含在某種類型的更改選擇中,如果存在這樣的情況?

+0

你可以添加playOnce國旗onClickListener,爲進入微調的方式,那麼你可以將該標誌設置爲false,當你玩了,真被點擊的微調時。 – 2011-04-22 21:50:48

+0

我刪除了我的答案 - 您是正確的,即使Spinner擴展AdapterView,也無法在Spinner中使用setOnItemClickListener。現在我記得的東西 - onItemSelected總是在Spinner首次填充時調用(即使沒有用戶交互操作)。我認爲這是Android Spinner源代碼中的一個錯誤。這並不總是一個問題,但在顯然播放聲音的情況下。不知道你會如何解決它。如果我想出點什麼,我會讓你知道的。對不起,我不能有更多的幫助。 – Squonk 2011-04-24 20:32:18

+0

是否有任何其他對象的行爲像一個微調/下拉,但會有一個OnItemClcickListener? – greydarrah 2011-04-24 22:50:07

回答

0

我可能會覺得,你可以使用一種解決方法 -

你可以用你的數組中的一個虛擬的記錄。說,如果你有你想放了行星的排列爲微調,那麼你可以有數組 -

List of Planets 
Mars 
Earth 
Venus 
.. 

應用程序啓動時,它會顯示一個提示消息爲「行星的名單」,並在回調你可以有這樣的代碼 -

if(0 != pos){ 
    //Play a sound 
}