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

问题描述 投票:0回答:2

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

java android android-studio
2个回答
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();
                    }
                }
            }
    );
}

0
投票

在你的代码中,policeSound是一个局部变量,仅在Oncreate()方法中可以看到,正如Oleh Sokolov所说,你应该将policeSound声明为一个类。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.