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();}

それは機能していません..私の考えは、目に見えないすべてのフラグメントを破壊することです。私も可視性を使用して1つを使用しようとしましたが、onDestroyやonDetachなどのフラグメントライフサイクルでメディアプレーヤー(つまり、p.release()またはp.stop()を呼び出す方法がわかりません..助けてください私は..私はアイデアを持っていますが、それを行う方法がわかりません.

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 に答える