0

这是片段类

    @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 ..我有想法,但不知道该怎么做。

4

1 回答 1

-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");


            }
        }
    }
于 2014-09-24T20:19:00.947 回答