2010-04-21 21 views
0

我有這樣的代碼:得到一個變量出了公共無效的(安卓)

hubSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     final MediaPlayer mp2 = MediaPlayer.create(Textbox.this, R.raw.hero); 
     mp2.start(); 
     } 
     public void onNothingSelected(AdapterView<?> parentView) { 
     } 
    }); 

(代碼基本上運行在一個新的項目選擇了微調,然後播放歌曲,哪位後來會是基於什麼被挑一個變量,但我很好,因爲它是現在)

問題:

而且我希望能夠使用「MP2」出這個公共無效的,(我想一個暫停它的按鈕) 我該怎麼做?

請解釋/節目...

非常感謝

詹姆斯

回答

0

將變量mp2移動到父類的實例。這將保持對它的運行引用,您可以隨時隨地進行交互。您將需要刪除final限定符,但如果MediaPlayer.create(...)將被調用多次並存儲。


編輯:

我指的是什麼沿此線:

class SomeClass { 
    private MediaPlayer mp2 = null; 

    private void whateverFunctionYouAreIn() { 
     hubSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
       SomeClass.this.mp2 = MediaPlayer.create(Textbox.this, R.raw.hero); 
       SomeClass.this.mp2.start(); 
      } 
      public void onNothingSelected(AdapterView<?> parentView) {} 
     }); 

     //TODO: put this in an onClickListener: 
     if (this.mp2 != null) { 
      this.mp2.pause(); 
     } 
    } 
} 
+0

我需要它裏面...(原因提出了對克里斯的回答評論) – 2010-04-21 17:54:17

+0

看到我的編輯。除了將MediaPlayer對象存儲在主類實例中外,其他內容與您的代碼完全相同。 – 2010-04-21 19:34:40

+0

那麼我只是把(暫停)按鈕放在'Some Class'中 - 但不是在私人空間中? - 它會起作用嗎? – 2010-04-21 19:39:45

0

我不知道,當你調用MediaPlayer.create(Textbox.this, R.raw.hero)發生什麼事,但假設它沒有直接的影響,你可以創建偵聽器外部的對象。


編輯1:好的,那該怎麼辦?

MediaPlayer currentPlayer; 

methodA() 
{ 
    hubSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    { 
     public void onItemSelected(AdapterView<?> parentView, 
      View selectedItemView, int position, long id) 
     { 
      MediaPlayer mp2 = MediaPlayer.create(Textbox.this, R.raw.hero); 
      mp2.start(); 
      setPlayer(mp2); 
     } 
     public void onNothingSelected(AdapterView<?> parentView) { 
    } 
}); 


setMediaPlayer(MediaPlayer player) 
{ 
    currentPlayer = player; 
} 
+0

啊,我知道,但我表示,今後(解決這個問題)之後我要去使用'R.raw。**** spinner *****'的變量值來代替 - 找到mp3曲目。所以它不能出門,或者可以嗎? :) – 2010-04-21 17:53:14

+0

我不知道R.raw來自哪裏,不幸的是,我沒有Android的經驗,但它聽起來不像一個本地變量,所以你可以把它放在任何你想要的地方。 – Chris 2010-04-21 18:32:30

+0

不要緊,然後:)無論如何謝謝 – 2010-04-21 19:12:03