这是我的代码。我是Java的新手,我知道这个问题已经发布但我还没有得到预期的前哨,所以我不得不发帖。
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MediaPlayer policeSound = MediaPlayer.create(this, R.raw.police);
Button policeSounds = (Button) this.findViewById(R.id.police);
policeSounds.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (policeSound.isPlaying()){
policeSound.stop();
}
else {
policeSound.start();
}
}
});
}
}
我尝试添加onBackPressed()
代码,但它无法检测到'policeSound',因为它在之前的方法中被检测到!
有人甚至教我如何使用@Override
注释!
要在其他方法中检测'policeSound',您需要将其设为类的字段:
private MediaPlayer policeSound;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
policeSound = MediaPlayer.create(this, R.raw.police);
Button policeSounds = (Button) this.findViewById(R.id.police);
policeSounds.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
if (policeSound.isPlaying()) {
policeSound.stop();
} else {
policeSound.start();
}
}
}
);
}
在你的代码中,policeSound是一个局部变量,仅在Oncreate()
方法中可以看到,正如Oleh Sokolov所说,你应该将policeSound声明为一个类。
关于@Override
,你可以see this good explanation
在android studio中,当您在java类文件中按ctrl + o
时,您可以覆盖超类方法,IDE将自动为您添加@Override
。