我有这段代码:
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 :(得分: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();
}
}
}