如何以编程方式将此片段添加到我的片段中?
How do I programmatically add this fragment to my fragment?
我正在尝试在我的 DialogFragment 中显示一个嵌套的 ListFragment。
显然我不能只在 XML 中为我的 DialogFragment 布局声明一个 <fragment>
,因为片段中的片段需要 childFragmentManager。所以我试图在我的 DialogFragment 中这样做:
Fragment listfragment = new ClassThatExtendsListFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(????????, listfragment).commit();
我完全不知道我需要在 ??????????部分,或者我什至会如何分配它。
只需在您的布局中添加 FrameLayout。假设您将其 ID 设为 "container",
Fragment exampleFragment = new ExampleFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, exampleFragment).commit();
我不确定你的 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
,但这取决于您
如果您希望按下启用后退按钮,您可能还想将上一个片段添加到后退堆栈中:
fragmentTransaction.replace(R.id.fragment_container, new MyFragment()).addToBackStack(null).commit();
我的要求也和你一样。下面的代码对我有用。
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>
希望对您有所帮助。
我正在尝试在我的 DialogFragment 中显示一个嵌套的 ListFragment。
显然我不能只在 XML 中为我的 DialogFragment 布局声明一个 <fragment>
,因为片段中的片段需要 childFragmentManager。所以我试图在我的 DialogFragment 中这样做:
Fragment listfragment = new ClassThatExtendsListFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(????????, listfragment).commit();
我完全不知道我需要在 ??????????部分,或者我什至会如何分配它。
只需在您的布局中添加 FrameLayout。假设您将其 ID 设为 "container",
Fragment exampleFragment = new ExampleFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, exampleFragment).commit();
我不确定你的 DialogFragment 使用什么类型的布局,但通常在 DialogFragment 膨胀的 XML 中你需要添加一个 FrameLayout
并且重要的是给它一个 ID .然后,当您进行片段事务时,您传入该 FrameLayout
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
,但这取决于您
如果您希望按下启用后退按钮,您可能还想将上一个片段添加到后退堆栈中:
fragmentTransaction.replace(R.id.fragment_container, new MyFragment()).addToBackStack(null).commit();
我的要求也和你一样。下面的代码对我有用。
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>
希望对您有所帮助。