Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用带底部导航的Android导航组件时检测选项卡更改_Android_Android Fragments_Android Navigation - Fatal编程技术网

在使用带底部导航的Android导航组件时检测选项卡更改

在使用带底部导航的Android导航组件时检测选项卡更改,android,android-fragments,android-navigation,Android,Android Fragments,Android Navigation,我目前有一个应用程序(Java),它使用带有底部导航的导航组件。每个选项卡都有一个片段 其中一个片段导航到具有音频播放器(使用媒体播放器)的辅助片段。此audi片段具有以下代码,当我返回到父片段时停止音频: @Override public void onDestroy() { super.onDestroy(); if (mp != null) { mp.pause(); mp = null; } } 问题是,当播放音频时,我点击底部导

我目前有一个应用程序(Java),它使用带有底部导航的导航组件。每个选项卡都有一个片段

其中一个片段导航到具有音频播放器(使用媒体播放器)的辅助片段。此audi片段具有以下代码,当我返回到父片段时停止音频:

@Override
public void onDestroy() {
    super.onDestroy();
    if (mp != null) {
        mp.pause();
        mp = null;
    }
}
问题是,当播放音频时,我点击底部导航的另一个选项卡,音频会继续播放。我考虑使用以下方法:

@Override
public void onStop() {
    super.onStop();
    if (mp != null) {
        mp.pause();
        mp = null;
    }
}
这解决了这个问题,但它也防止了在屏幕关闭时播放音频。(当桌面不存在时,不会发生这种情况)

其思想是当用户点击任何底部导航选项卡时,执行pause()函数

在我当前的结构中,当用户点击底部选项卡时,如何让声音停止?

您可以使用“setOnNavigationItemSelectedListener()”来监听底部导航上的单击

如果用户选择的项目不是音频播放器内的项目,则调用stopAudioPlayer函数

例如:-

navBottom.setOnNavigationItemSelectedListener(item -> {

       if (item.getItemId() != R.id.nav_bottom_audio_player)
          stopAudioPlayer();

       return true;
        });

嗨,我有几个问题。这会去哪里?在MainActivity中(在MainActivity中,我为导航组件设置了底部导航)?如果是这样,我无法访问媒体播放器所在的片段,因为它不是底部导航的一部分;它是一个由多个底部导航选项调用的子片段(因此在您的示例中,我无法访问R.id.nav_bottom_audio_player)。另外,我如何从MainActivity访问上述子片段中的mediaPlayer?当你的应用程序关闭或屏幕关闭时,片段中的mediaPlayer不应继续播放(如果你需要,你应该避免Android在后台停止媒体播放),因此
onStop()
似乎正是片段的正确方法。