我在MainActivity中实现了FAB的setOnClickListener(),它没有任何问题。
我有8个不同的碎片(一个显示WebView,另一个加载RecyclerView等等),基于导航抽屉中的选择。
出现FAB并且其当前操作正在播放默认歌曲,该工作正常。
现在,从我的8个不同片段中,3个片段显示不同的歌曲列表 由于FAB显示为默认值,因此我想将FAB用作播放按钮。
因此,如果用户在一个片段中并选择一个mp3并单击FAB,它应该播放该歌曲。
这意味着我应该以某种方式用Fragment中实现的一个覆盖MainActivitiy的setOnClickListener。
以同样的方式,我有另外两个片段显示一些mp3歌曲列表。通过选择那些中的mp3并单击FAB,片段应该监听该FAB操作。
基本上,FAB应该覆盖其动作并从当前片段中获取输入。
我能想到的一种方法是在调用fab.setOnClickListener时,我将检查当前的Fragment并根据它进行操作。
但问题是播放这首歌,我正在创建一个包含许多参数的Intent并调用startservice。
如果我可以在Fragment中做一些事情,我可以在setOnClickListener()上创建一个Intent,捆绑所需的参数等。
非常感谢任何解决我的困惑的建议。
答案 0 :(得分:0)
我尝试了以下方式并且工作正常。将其添加为我的问题的答案,因为它正在运作。
方法:
在媒体假设播放的所有片段中实现了一个具有通用名称playAudio()的函数。在MainActivity中,onClick()浮动操作按钮,我正在检查当前片段的实例。如果它是4个中的3个,需要在fab点击时播放相应的音频,我正在调用片段的playAudio()。 其余的碎片,做其他事情。 以下是代码片段:
@Override
onClick(View v) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container_body);
if (fragment != null && fragment.isMenuVisible()) {
if (fragment instanceof FragmentAudioMessage) {
((FragmentAudioMessage) fragment).initPlay();
} else {
//do something else.
}
}
这种方式对每个片段的工作方式都不同。
希望这会有所帮助。