Java 从设置片段返回后在活动中杀死mediaplayer

Java 从设置片段返回后在活动中杀死mediaplayer,java,android,fragment,android-mediaplayer,lifecycle,Java,Android,Fragment,Android Mediaplayer,Lifecycle,我不熟悉安卓系统。我正在做我的第一个应用程序。我有一个ActivityMain,我转到Preferences片段,在那里我可以选择启用或禁用音乐。在我改变我的偏好并按下Ok后,片段关闭,我想检查用户是否在音乐选项上设置了“否”,如果是这样的话,请杀死mediaplayer。我应该在哪里做这件事。我把它写在简历上了,但它不起作用。从片段返回后,我应该将触发killMusic()方法的代码放在哪里 @Override protected void onResume() { super.onR

我不熟悉安卓系统。我正在做我的第一个应用程序。我有一个ActivityMain,我转到Preferences片段,在那里我可以选择启用或禁用音乐。在我改变我的偏好并按下Ok后,片段关闭,我想检查用户是否在音乐选项上设置了“否”,如果是这样的话,请杀死mediaplayer。我应该在哪里做这件事。我把它写在简历上了,但它不起作用。从片段返回后,我应该将触发killMusic()方法的代码放在哪里

@Override
protected void onResume() {
    super.onResume();
    music = pref.getString("music", null);
    if (music.equals("No")){
        killMusic();
    }
}


private void killMusic() {
    if (introSong != null) {
        introSong.release();
    }
}

首先,记录一些日志消息,以便能够检查是否调用了您的方法,如:

protected void onResume() {
    super.onResume();
    Log.d("DEBUG","MyClass::onResume called");
    music = pref.getString("music", null);
    if (music.equals("No")){
        killMusic();
    }
}

也就是说,您的代码是在某个片段的onResume中,还是在活动的onResume中?因为您的首选项是一个片段,因此在不暂停/恢复主要活动的情况下调用它。这可以解释为什么你的代码不起作用/在简历上被称为…

听起来是个不错的地方…它不起作用…我已经试过了。killMusic方法很好用…当我在片段中选择“music”->“No”在设置和我重新启动应用程序时,没有音乐,因此该方法工作正常……但我希望它停止音乐而不必重新启动应用程序……一旦片段关闭,并且您返回活动检查用户是否没有播放音乐并将其杀死,onResume方法似乎不是放置该方法的地方……代码是在活动的onResume中,我想要实现的是活动->触摸操作栏上的首选项按钮->首选项片段打开->选择首选项并按片段上的ok-->片段关闭->当我回到活动中时,如果用户已将“音乐”选项置于“否”中,请关闭音乐现在它正在工作,但我必须重新启动应用程序才能应用更改。此外,共享首选项工作正常,如果我重新启动应用程序,首选项的状态与上次关闭应用程序之前相同。。。。。