【问题标题】:Media Player won't play the sound in button click method媒体播放器不会在按钮单击方法中播放声音
【发布时间】:2014-03-31 15:31:10
【问题描述】:

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

        }

    }

}

【问题讨论】:

    标签: java android audio android-mediaplayer media


    【解决方案1】:

    您还没有在Buttons 上实现监听器,或者至少没有显示它。你应该有类似的东西

    Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(this);
    

    setContentView() 之后的onCreate() 中。每个Button 都需要这个。

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

    我已经解释过了in this answerthis one

    The Button docs also cover this

    【讨论】:

    • 感谢您的回答,但不幸的是问题并非如此。我加了,还是不行。
    • 你能定义“不工作”吗?你有任何错误吗?此外,编辑并发布这部分代码以及您添加它的方式。
    • 我编辑了代码。我没有收到任何错误。就像媒体播放器在 onclick 方法中为空一样。
    • 你还没有像我的第二行代码那样显示你设置listeners 的位置。如果MediaPlayer 返回null,那么它会崩溃。
    • 不客气。请编辑 OP 以将按钮声明从原始代码中取出,否则可能会使其他人感到困惑。编辑时,应保持原代码不变,单独编辑新代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多