1

私はこのコードを持っています:

    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」を使用できるようにしたい(一時停止するボタンが必要)どうすればよいですか?

説明/表示してください...

どうもありがとう

ジェームズ

4

2 に答える 2

0

を呼び出したときに何が起こるかはわかりませんMediaPlayer.create(Textbox.this, R.raw.hero)が、すぐに効果がないと仮定すると、リスナーの外部でオブジェクトを作成できます。


編集1:OK、それではこれはどうですか?

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;
}
于 2010-04-21T17:51:25.443 に答える
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();
        }
    }
}
于 2010-04-21T17:52:56.240 に答える