我正在尝试在DialogFragment中显示嵌套的ListFragment。
显然我不能在XML中为我的DialogFragment布局声明<fragment>
,因为片段中的片段需要childFragmentManager。所以我想在DialogFragment中这样做:
Fragment listfragment = new ClassThatExtendsListFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(????????, listfragment).commit();
我完全不知道我需要在什么资源ID中添加????????部分,或者我甚至如何分配它。
答案 0 :(得分:1)
只需在布局中添加FrameLayout即可。假设你把它的id称为“容器”,
Fragment exampleFragment = new ExampleFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, exampleFragment).commit();
答案 1 :(得分:1)
我的要求也和你一样。下面的代码对我有用。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyTripFragment myTripFragment = new MyTripFragment();
fragmentTransaction.add(R.id.fragment_container, myTripFragment);
fragmentTransaction.commit();
XML代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
希望它对你有所帮助。
答案 2 :(得分:0)
我不确定您用于DialogFragment的布局类型,但通常在DialogFragment膨胀的XML中,您需要添加FrameLayout
,并且重要的是为其提供ID。然后,当您执行片段事务时,传入该FrameLayout的资源ID
XML:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
</LinearLayout>
如果您想使用嵌套片段,则需要调用getChildFragmentManager()
:
FragmentManager fragmentManager = getChildFragmentManager()
然后进行片段交易:
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, new MyFragment()).commit();
您可能希望使用add
方法代替replace
,但这取决于您
如果您想要按下启用后退按钮,您可能还想将前一个片段添加到Backstack:
fragmentTransaction.replace(R.id.fragment_container, new MyFragment()).addToBackStack(null).commit();