[英]how to reload the contents of fragment when tab is reselected in fragmenttabhost android
[英]Android FragmentTabHost how to get a reference to fragment in tab
我有一個實現FragmentTabHost的Fragment,並創建了幾個選項卡,每個選項卡都有一個Fragment。 我試圖獲得對這些片段之一的引用,但是卻對如何繪制一個空白。
public class TabFragment extends Fragment {
private FragmentTabHost mTabHost;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.container);
addTab("study","Study",StudyFragment.class);
addTab("tab2","Tab 2",Tab2Fragment.class);
return mTabHost;
}
private <T extends Fragment> void addTab(String sTag, String sTitle, Class<T> c) {
View tabView = createTabView(getActivity(),sTitle);
mTabHost.addTab(mTabHost.newTabSpec(sTag).setIndicator(tabView),
c, null);
}
public StudyFragment getStudyFragment() {
// not working as fragment has not been tagged
return getChildFragmentManager().findFragmentByTag("study");
}
因此,問題是如何在創建研究片段時對其進行標記或返回引用?
我已經看到了一些建議覆蓋onAttachFragment的解決方案,但這是針對FragmentActivity而不是Fragment
要獲取片段,您可以為片段設置一個ID,然后使用以下代碼:
FragmentManager manager = getSupportFragmentManager();
MyFragment myFragment = (MyFragment)manager.findFragmentById(R.id.MyFragment);
好的,因此您必須使用TabHost.TabSpec添加標簽,如下所示:
tabHost = (FragmentTabHost)mainView.findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
TabHost.TabSpec tabOne = tabHost.newTabSpec("One").setContent(R.id.fragOne);
TabHost.TabSpec tabTwo = tabHost.newTabSpec("Two").setContent(R.id.fragTwo);
tabHost.addTab(tabOne, TabOne.class, savedInstanceState);
tabHost.addTab(tabTwo, TabTwo.class, savedInstanceState);
在此代碼中,R.id.fragOne和R.id.fragTwo引用了活動布局中定義的兩個FrameLayout。 如果您沒有xml布局,則可以以編程方式定義一個新的FrameLayout,其中每個選項卡都有一個ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.