0

で動画を再生するアプリがありますDialogFragment。に追加MediaControllerしましたVideoViewが、2 つの問題があります。

  • MediaControllerの後ろに隠れていDialogFragmentます。
  • が表示されているときに画面の向きを変更するDialogFragmentと、アクティビティにリーク ウィンドウがあるという例外が発生します。
  • 最初のものは、linearLayoutParent.bringChildToFront(mediaControls)うまくいかなかったものを使用してみました。そして、私は2番目のものに対処する方法がわかりません。

    手伝ってください。:)

    4

    2 に答える 2

    5

    これは古い質問ですが、私も を に表示しVideoViewていて、 が の後ろに隠れているDialogFragmentという同じ問題がありました。MediaControllerDialogFragment

    同じことを考えている人にとって、これは私がやったことです。

    //Remove the mediaController from it's parent view.
    ((ViewGroup) mediaController.getParent()).removeView(mediaController);
    //Add the mediaController to a FrameLayout within your DialogFragment.
    ((FrameLayout) findViewById(R.id.controlsWrapper)).addView(mediaController);
    

    画面の幅を埋めるようにしてFrameLayout、重力を画面の下部に設定してください。

    VideoViewまた、 をタップしても、が表示されたり非表示になったりしないことに注意してくださいMediaController(何らかの理由で)。

    View.onClickListenerしたがって、VideoViewを追加および削除するには、 に を追加する必要がありますMediaController

    于 2014-08-10T09:13:38.660 に答える
    2

    あなたの2番目のポイントに:

    setRetainInstance(true)フラグメントの onCreate で試してください。これにより、構成の変更のように、アクティビティが破棄されてもフラグメントは存続します。サポート ライブラリを使用している場合は、フラグメントが閉じないようにするためにこれが必要になります。

     @Override
     public void onDestroyView() {
         if (getDialog() != null && getRetainInstance())
             getDialog().setDismissMessage(null);
             super.onDestroyView();
     }
    

    これは、DialogFragment の却下リスナーを上書きするために必要です。

    フラグメントからのアクティビティの呼び出しがある場合は、それに応じてコンテキスト/コールバックを更新して、新しく作成されたアクティビティへの参照を追跡します。そのため、onAttach() または onActivityCreated() を使用できます。

    于 2013-08-10T15:58:03.633 に答える