如何刷新父片段中的片段(图表片段)? 我试过像this这样做,但它不起作用。
Java(刷新方法):
Fragment fragment = getChildFragmentManager().findFragmentById(R.id.statistic_order_fragment);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.detach(fragment);
fragmentTransaction.attach(fragment);
fragmentTransaction.commit();
XML:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView xmlns:card_view="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<fragment
android:id="@+id/statistic_order_fragment"
android:tag="ORDER"
android:name="com.readyscript.dk.storemanagement.Statistic.StatisticOrderFragment"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_gravity="center_horizontal"
card_view:layout="@layout/fragment_statistic_order" />
<fragment
android:id="@+id/statistic_sum_fragment"
android:tag="SUM"
android:name="com.readyscript.dk.storemanagement.Statistic.StatisticSumFragment"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_gravity="center_horizontal"
card_view:layout="@layout/fragment_statistic_sum" />
<fragment
android:id="@+id/statistic_check_fragment"
android:tag="CHECK"
android:name="com.readyscript.dk.storemanagement.Statistic.StatisticCheckFragment"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
card_view:layout="@layout/fragment_statistic_check" />
</LinearLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
当我使用SwipeRefreshLayout时,我需要刷新所有3个片段而不重新启动父片段。
答案 0 :(得分:2)
经过这么多编码...... 我得到了解决方案..
getActivity().getSupportFragmentManager().beginTransaction().replace(**containerId**,
new **NameOfCurrentFragment**).commit();
答案 1 :(得分:1)
我认为问题在于您已将片段静态放置在xml文件中。更好的方法是在xml中放置<FrameLayout>
s而不是<fragment>
标记。然后,在您的课程中,以编程方式添加片段,并根据需要替换它们。
如果您需要我向您展示执行此操作的代码,请告诉我。
答案 2 :(得分:1)
使用getChildFragmentManager()
代替getFragmentManager()
。
Child Fragment Manager正是用于管理片段内的片段,而Fragment Manger则用于管理Activities内的片段。
替换,
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
有了这个,
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
答案 3 :(得分:1)
刷新方法下面的片段调用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Refresh tab data:
if (getFragmentManager() != null) {
getFragmentManager()
.beginTransaction()
.detach(this)
.attach(this)
.commit();
}
}