2013-08-10 2 views
0

У меня есть приложение, которое воспроизводит видео в DialogFragment. Я добавил MediaController в VideoView, однако есть две проблемы:
Проблемы с DialogFragment с ориентацией экрана и MediaController

  • MediaController скрыт за DialogFragment.
  • Изменение ориентации экрана, когда DialogFragment это видимые результаты в виде исключения, что деятельность имеет просочилась окно
  • Для первого, я попытался с помощью linearLayoutParent.bringChildToFront(mediaControls), который не работал. И я не знаю, как бороться со вторым.

    Помогите мне. :)

    ответ

    2

    К вашему второму пункту:

    Попробуйте setRetainInstance(true) в вашей OnCreate фрагмента. При этом фрагмент выживет, когда действие будет уничтожено, как при изменении конфигурации. Если вы используете библиотеку поддержки вы будете нуждаться в этом, чтобы реально предотвратить закрытие вашего фрагмента:

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

    Это необходимо, чтобы перезаписать распускать слушатель в DialogFragment.

    Если у вас есть призывы к действию из обновления фрагмента, контекст/обратный вызов соответствующим образом отслеживает ссылку на новое созданное действие. Для этого вы можете использовать onAttach() или onActivityCreated().

    +1

    Как насчет первого? –

    +0

    @LittleChild Я никогда не пользовался медиа-контроллером. –

    2

    Хотя это старый вопрос, я также отображение в DialogFragment в VideoView и имели один и тот же вопрос, где MediaController была скрыта за DialogFragment.

    Для тех, кто также ищет то же самое, это то, что я сделал.

    //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 (по какой-либо причине).

    Чтобы добавить и удалить MediaController, вам необходимо добавить View.onClickListener в VideoView.