按下主页或后退按钮时如何暂停/停止音乐?

时间:2018-09-04 19:08:53

标签: java android android-studio

这是我的代码。我是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批注!

2 个答案:

答案 0 :(得分:0)

要以其他方法检测“ 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();
                    }
                }
            }
    );
}

答案 1 :(得分:0)

在您的代码中, policeSound 是一个局部变量,仅在Oncreate()方法中可见,如Oleh Sokolov所说,您应将 policeSound 声明为字段上课。

关于@Override,您可以see this good explanation

在android studio中,当您在Java类文件中按ctrl + o时,您可以覆盖超类方法,IDE会自动为您添加@Override