从公共虚空中获取变量(Android)

时间:2010-04-21 17:44:42

标签: java android eclipse variables media-player

我有这段代码:

    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',(我想要一个暂停它的按钮) 我怎么能这样做?

请解释/显示......

非常感谢

詹姆斯

2 个答案:

答案 0 :(得分:0)

我不确定当你调用MediaPlayer.create(Textbox.this, R.raw.hero)时会发生什么,但假设它没有立即效果,你可以在侦听器之外创建对象。


Edit1:好的,那怎么样?

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;
}

答案 1 :(得分: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();
        }
    }
}