<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>
это исправляет эту ошибку, но когда экран поворачивается в горизонтальную плоскость, у меня появляется еще одна ошибка с двумя похожими фрагментами на одном экране.
Как я могу это исправить?