我正在尝试制作一个播放声音的简单按钮,但我在(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();
}
});
}
}
答案 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();
}
});