【问题标题】:How to stop mediaplayer upon accessing another fragment?如何在访问另一个片段时停止媒体播放器?
【发布时间】:2014-09-25 04:19:00
【问题描述】:

这是片段类

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View layoutView = inflater.inflate(R.layout.fragment_lyrics,
            container, false);
    int hymnNo = fragVal - 1;
            //Database
    final MediaPlayer p = MediaPlayer.create(getActivity(), R.raw.s);

    final ToggleButton playPauseButton = 
    (ToggleButton)layoutView.findViewById(R.id.playpause);
    playPauseButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            if (playPauseButton.isChecked() ){

                p.start();
            }else{
                p.pause();
            }

        }});

我有一些想法......一旦我转到另一个片段,我的这个片段中的媒体播放器如何停止?并完全重置它(当前片段),这意味着我的切换按钮也将处于默认位置? 我试过了

   public void onDetach()
   {
   getActivity().finish();}

它不起作用..我的想法是销毁所有不可见的碎片。 我也尝试使用可见性,但我不知道如何在片段生命周期中调用媒体播放器(即 p.release() 或 p.stop(),例如 onDestroy 或 onDetach ..请帮助me guyz..我有想法,但不知道怎么做。

【问题讨论】:

    标签: android android-fragments android-mediaplayer


    【解决方案1】:

    试试这个。

        @Override 
        public void setUserVisibleHint(boolean isVisibleToUser) { 
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
                Log.d(TAG, "Visible");
    
                 //your code
    
            } else {
                Log.d(TAG, "Not Visible");
    
                   if (mPlayer != null){
                    mPlayer.release();
    
                    Log.d(TAG, "Player released");
    
    
                }
            }
        }
    

    【讨论】:

    • 添加一些关于您的answer 的详细信息而不是“试试这个”会很有帮助。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多