我有 3 个按钮,它们应该播放 3 种不同的声音。当我在 oncreate 方法中使用 3 个单独的 onclicks 方法时,它工作正常,但我想稍微清理一下代码,所以我将 OnClickListener 实现到 Activity 并将 onclick 方法向下移动。但现在,媒体播放器不播放声音。如何确保媒体播放器正常工作?
public class Play extends Activity implements OnClickListener {
MediaPlayer mpPlay1,mpPlay2,mpPlay3;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.play);
Button bPlay1 = (Button) findViewById(R.id.button1);
Button bPlay2 = (Button) findViewById(R.id.button2);
Button bPlay3 = (Button) findViewById(R.id.button3);
int resIdPlay1 = getResources().getIdentifier("play1", "raw", getPackageName());
int resIdPlay2 = getResources().getIdentifier("play2", "raw", getPackageName());
int resIdPlay3 = getResources().getIdentifier("play3", "raw", getPackageName());
mpPlay1 = MediaPlayer.create(this, resIdPlay1);
mpPlay2 = MediaPlayer.create(this, resIdPlay2);
mpPlay3 = MediaPlayer.create(this, resIdPlay3);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
mpPlay1.start();
break;
case R.id.button2:
mpPlay2.start();
break;
case R.id.button3:
mpPlay3.start();
break;
}
}
}
最佳答案
您还没有在 Buttons
上实现监听器,或者至少还没有显示它。你应该有类似的东西
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(this);
在setContentView()
之后的onCreate()
内。每个Button
都需要这个。
由于您正在尝试清理代码并使其更加简洁,因此您可以在 xml 中设置 onClick()
。
我已经解释过了in this answer和 this one
关于java - 媒体播放器不会在按钮单击方法中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765777/