Java 媒体播放器赢得';不要用按钮点击法播放声音

Java 媒体播放器赢得';不要用按钮点击法播放声音,java,android,audio,android-mediaplayer,media,Java,Android,Audio,Android Mediaplayer,Media,我有3个按钮,它们应该播放3种不同的声音。当我在oncreate方法中使用3个单独的onclick方法时,它工作正常,但我想稍微清理一下代码,所以我将OnClickListener实现为acvtivity,并将onclick方法向下移动。但现在,媒体播放器不播放声音。如何确保媒体播放器正常工作 public class Play extends Activity implements OnClickListener { MediaPlayer mpPlay1,mpPlay2,mpPla

我有3个按钮,它们应该播放3种不同的声音。当我在oncreate方法中使用3个单独的onclick方法时,它工作正常,但我想稍微清理一下代码,所以我将OnClickListener实现为acvtivity,并将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;

        }

    }

}

您尚未在
按钮上实现侦听器,或者至少尚未显示它。你应该吃点类似的东西

Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(this);
setContentView()之后的
onCreate()
中。每个
按钮都需要这个

由于您正试图清理代码并使其更加精简,因此可以在xml中设置
onClick()

我已经解释过了


谢谢你的回答,但不幸的是问题并不是这样。我加上了,它仍然不起作用。你能定义“不起作用”吗?你有什么错误吗?另外,编辑并发布代码的这一部分,以及你是如何添加它的。我编辑了代码。我没有得到任何错误。这就像mediaplayer在onclick方法中为null一样。您仍然没有显示在哪里设置了
侦听器,就像在我的第二行代码中一样。如果
MediaPlayer
返回
null
,则它将崩溃。不客气。请编辑OP,将按钮声明从原始代码中删除,否则可能会使其他人感到困惑。编辑时,应保持原始代码不变,只需单独编辑新代码即可。