<merge> во фрагменте

У меня есть фрагмент VideoListPagerFragment, Это был VideoListDemoActivity с примера Android API YoutubePlayer. Я сделал фрагмент из этого примера деятельности, но мне нужно исправить одну ошибку. Я начинаю свой фрагмент как:

Код:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
      View view=inflater.inflate(R.layout.videos_fragmentpage,container,true);
someAnotherMethods();
returt view;
}

ФРАГМЕНТ XML(R.layout.videos_fragmentpage):

<merge
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    >
    <fragment
        class="com.alexpoltavets.fifacommunity.videos.VideoListPagerFragment$VideoListFragment"
        android:id="@+id/list_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:id="@+id/video_box"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/close_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:src="@android:drawable/btn_dialog"
            android:onClick="onClickClose"/>

        <fragment
            class="com.alexpoltavets.fifacommunity.videos.VideoListPagerFragment$VideoFragment"
            android:id="@+id/video_fragment_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>
</merge>

Но когда я начинаю свою активность: код добавления фрагмента:

FragmentManager fragmentManager=getFragmentManager();
    fragmentManager.beginTransaction()
.add(R.id.videos_container,VideoListPagerFragment.newInstance(),"test")
            .commit();

XML деятельности:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/videos_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

У меня ошибка:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alexpoltavets.fifacommunity/com.alexpoltavets.fifacommunity.videos.VideosActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Если я изменюсь:

  View view=inflater.inflate(R.layout.videos_fragmentpage,container,true);

чтобы:

  View view=inflater.inflate(R.layout.videos_fragmentpage,container,false);

у меня будет:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alexpoltavets.fifacommunity/com.alexpoltavets.fifacommunity.videos.VideosActivity}: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true

Если я изменюсь <marge> в другой контейнер, как <FrameLayout> это исправляет эту ошибку, но когда экран поворачивается в горизонтальную плоскость, у меня появляется еще одна ошибка с двумя похожими фрагментами на одном экране.

Как я могу это исправить?

0 ответов

Другие вопросы по тегам