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

时间:2021-05-27 21:35:55

标签: android android-fragments android-navigation

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

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

@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;
    }
}

这解决了问题,但也阻止了在屏幕关闭时播放音频。 (当 onStop 不存在时,这不会发生)。

这个想法是在用户点击任何底部导航选项卡时执行 pause() 函数。

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

1 个答案:

答案 0 :(得分:0)

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

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

示例:-

navBottom.setOnNavigationItemSelectedListener(item -> {

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

       return true;
        });