如何在多个片段之间共享MediaPlayer对象?

时间:2014-02-20 14:28:57

标签: java android android-fragments android-mediaplayer

我已经设置了1个Main Activity(扩展了Activity类)和2个Fragments(扩展了fragment类)。

我尝试过建立一个由2个片段实现的接口。每个片段都从接口实现特定的功能,如下所示:

public stopMusic()
{
  mediaplay.release(); // here, the mediaplay object belongs to only the respective fragment
}

现在,我知道不起作用,因为MediaPlayer对象对两个片段都不常见,即它们之间没有共享。

如果我从另一个片段(如Fragment2java)点击一个按钮,我希望释放在Fragment1.java中传输文件的mediaplayer对象。同样,如果我从Fragment1.java点击按钮,则释放在Fragment2.java中流式传输文件的mediaplayer对象。

我怎样才能实现这一目标?示例代码确实会有所帮助。

2 个答案:

答案 0 :(得分:1)

假设片段A是控制片段,片段B是媒体播放器。所有通信都应通过父活动完成。因此,在片段B中,您创建父活动实现的“公共接口”,然后父活动应该调用片段B中的方法。

另外,根据你对媒体播放器或其他什么做的,这是否属于背景而不是片段B?

注意:片段应松散耦合,不会从片段到片段进行通信,始终通过父Activity进行通信。

希望这有帮助。

答案 1 :(得分:0)

您必须执行以下操作:

  • 在您的MainActivity中创建一个属性(让我们称之为myMediaPlayerObject
  • 在您的片段中,您可以获得此处的当前活动:Activity a = getActivity();
  • 现在您可以投射此活动并调用此处的函数:((MainActivity)a).stopMusic();或直接使用对象((MainActivity)a).myMediaPlayerObject