【问题标题】:Kill mediaplayer in an Activity after returning from Settings Fragment从设置片段返回后杀死活动中的媒体播放器
【发布时间】:2015-09-16 03:01:05
【问题描述】:

我是 Android 新手。我正在做我的第一个应用程序。我有一个 ActivityMain,然后我转到 Preferences Fragment,我可以在其中选择启用或禁用音乐。在我更改我的偏好并按确定后,片段会关闭,我想检查用户是否在音乐选项上设置了“否”,在这种情况下终止媒体播放器。我应该在哪里做这个。我把它放在 onResume 中,但它不起作用。从片段返回后,我应该把我的代码放在哪里来触发 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();
    }
}

【问题讨论】:

  • onResume 听起来是个放置它的好地方...
  • 它不起作用.....我已经尝试过了。并且 killMusic 方法工作正常....
  • 当我在设置中选择片段“音乐”-->“否”并重新启动应用程序时,没有音乐,所以该方法工作正常......但我希望它停止音乐而不必重新启动应用程序.... onResume 方法似乎不是放置该方法的地方.......

标签: java android fragment android-mediaplayer lifecycle


【解决方案1】:

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

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

话虽如此,您的代码是在某个片段的 onResume 中,还是在活动中?因为您的 Preference 是一个片段,因此在调用它时不会暂停/恢复主要活动。这可以解释为什么你的代码不工作/调用...

【讨论】:

  • 代码在活动的onResume中,我想要实现的是活动->触摸操作栏上的首选项按钮->首选项片段打开->选择首选项并在片段上按确定-- >片段关闭->当我回到活动中时,如果用户已将“音乐”选项置于“否”,则终止音乐现在它正在工作,但我必须重新启动应用程序才能应用更改。共享首选项也工作正常,如果我重新启动应用程序,首选项的状态与上次关闭它之前的状态相同.....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多