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

Java 在Android Studio中播放声音但不播放的按钮,java,android,audio,android-studio,Java,Android,Audio,Android Studio,我试图制作一个简单的按钮来播放声音,但是我在(这个,R.raw.shotgun)上遇到了一个错误。我有raw文件夹和声音文件。我想问题出在这个上,但我不知道为什么。谢谢 public class MainActivity extends AppCompatActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { supe

我试图制作一个简单的按钮来播放声音,但是我在
(这个,R.raw.shotgun)
上遇到了一个错误。我有
raw
文件夹和声音文件。我想问题出在
这个
上,但我不知道为什么。谢谢

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();
            }
        });
    }
}

MediaPlayer.create的第一个参数是
上下文
。当您在
活动
s范围内工作时,
MediaPlayer.create(这个,R.raw.shotgun)
的使用是有效的,因为
活动
扩展了
上下文
,因此在这种情况下
这个
也成为了
上下文

但是,您正在
视图中工作。OnClickListener
作用域,并且
假定此类的值,而不是需要的
上下文
。要解决这个问题,只需在活动范围内将上下文变量设置为
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();
        }
    });

老实说,我对android studio和java非常陌生。什么是应用程序上下文@RafaelCardoso@LUKER
Context
是一个类,它具有多种操作所需的许多属性,例如访问资源或创建新视图。那么,我应该在Context部分添加什么呢@谢谢你的帮助!对不起,我没有看到代码中的所有更改。我还有一个问题。我如何将此实现到具有多个“button.setOnClickListener(this)”的按钮开关中?我可以想象,环境会发生一些变化@拉斐尔卡多佐