这里有一些事情(免责声明,这就是我习惯使用它的方式,可能有更好的方法):
>您似乎每次点击的工作量比您需要的多得多.您正在为Activity的视图中的每次单击创建并添加新的onClickListener,而不是Button.您只需要设置一次侦听器,而不是设置Button而不是整体视图;我倾向于在Activity的构造函数中这样做.
>关于你的错误,当我传递的Context是覆盖的Activity时,MediaPlayer对我来说很好.当你传递它时,它传递你正在创建的onClickListener,抛弃MediaPlayer.
>最后,要实际播放声音,您必须调用start().
因此,对于Activity中的构造函数,您可以创建一次MediaPlayer,找到Button,并附加一个onClickListener,它将播放您刚刚创建的MediaPlayer的声音.它看起来像:
public class MyActivity extends Activity {
public MyActivity(Bundle onSavedStateInstance) {
// eliding some bookkeepping
MediaPlayer mp = MediaPlayer.create(this, R.raw.mamacita_zero);
Button zero = (Button)this.findViewById(R.id.btnZero);
zero.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
}
}
希望有所帮助!