Tôi có một FragmentTabHost trong bố cục của một trong các đoạn của tôi (hãy gọi nó là parentFragment). Bây giờ, tôi khởi tạo từng mảnh vỡ trong tabhost lập trình trong onCreateView của parentFragment. Khi parentFragment được tạo ra, mọi thứ dường như hoạt động tốt và nó hiển thị đoạn của tab đầu tiên một cách chính xác.Các mảnh vỡ không hiển thị sau khi chuyển đổi tab trong lồng nhau FragmentTabHost
Nhưng ngay sau khi tôi chuyển tab một lần, các đoạn biến mất (tôi có thể thấy màu nền của tabhost, nhưng không có nội dung của tabcontent-container). Ngoài ra đoạn đầu tiên đã biến mất khi tôi chuyển về nó. Các mảnh được thực sự được tạo ra như đăng nhập của tôi cho thấy, nhưng họ không nhìn thấy được.
Tôi cho rằng nó phải liên quan đến việc tạo lại các mảnh, vì tôi cũng đã thử sử dụng một ViewPager với một FragmentPagerAdapter. Ở đó tôi có thể vui vẻ chuyển đổi giữa hai mảnh đầu tiên (được cài đặt sẵn do setOffscreenPageLimit() == 1), nhưng các mảnh (lại) được tạo ra ngoài đó cũng trống.
Có ai nghĩ gì không ??
Dưới đây là một số mã của tôi:
Extract của XML parentFragment của:
...
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp" />
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_below="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</android.support.v4.app.FragmentTabHost>
...
Extract của XML parentFragment của:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.fragment_app_details_test, container, false);
tabHost = (FragmentTabHost) layoutContainer.findViewById(android.R.id.tabhost);
tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("TAB1"),
FragmentSubTab1.class, null);
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("TAB2"),
FragmentSubTab2.class, null);
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("TAB3"),
FragmentSubTab3.class, null);
return layoutContainer;
}
...
Simple lạm phát bố trí trong tab phụ của đoạn:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);
initUi(layoutContainer);
return layoutContainer;
}
...
Vì vậy, các mảnh vỡ sẽ bị ẩn khi tiêu điểm thay đổi? – jsmith
Chỉ ra rằng một ViewGroup tùy chỉnh xung quanh đã gây ra vấn đề này do cách nó xử lý onLayout và onMeasure. – Till
@Till Bạn đã giải quyết được vấn đề này chưa? Nhận được cùng một vấn đề ngay bây giờ. http://stackoverflow.com/questions/17009462/fragmenttabhost-on-tab-change-the-fragments-get-destroyed-and-disappear –