在Android Studio中播放声音的按钮不播放

时间:2016-03-06 04:28:56

标签: java android audio android-studio

我正在尝试制作一个播放声音的简单按钮,但我在(this, R.raw.shotgun)上收到错误消息。我有raw文件夹和声音文件。我认为问题在于this,但我不知道为什么。感谢。

public class MainActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MediaPlayer mp = MediaPlayer.create(this, R.raw.shotgun);
                mp.start();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:3)

MediaPlayer.create的第一个参数是Context。当您在MediaPlayer.create(this, R.raw.shotgun)范围内工作时Activity的使用情况有效,因为Activity延伸Context,因此this在这种情况下最终成为Context {1}}也是。

但是,您在View.OnClickListener范围内工作,而this则认为此课程为'值,而不是Context根据需要。要解决此问题,只需将Context变量设置为this,同时仍在活动范围内。

public class MainActivity extends AppCompatActivity {

private Button button;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    context = this;

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MediaPlayer mp = MediaPlayer.create(context, R.raw.shotgun);
            mp.start();
        }
    });