是否可以使用FragmentTabHost手动创建片段?

Jon*_*lis 5 android android-fragments android-tabs

FragmentTabHost 在其通常的配置中足够有礼貌地为我们处理片段的实例化,这意味着我们只需要传入类中,并完成剩下的工作:

mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("friends").setIndicator("Friends"), FriendsFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), ContactsFragment.class, null);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我们只需要传递Fragment类(例如FriendsFragment.class)和传递的args包(在本例中null)并且FragmentTabHost将为我们处理片段的初始化.它似乎也很懒惰,只会在实际更改选项卡时加载片段.

在很多情况下都很棒,但我想要做的是手动预先创建我的片段,然后将它们附加到FragmentTabHost之后.这样做的主要优点是我可以确保所有选项卡片段始终存在,而不是在用户更改选项卡时懒惰地创建.

理想情况下,我想拥有的是这样的东西(如果只存在方法!):

FriendsFragment f1 = new FriendsFragment();
ContactsFragment f2 = new ContactsFragment();

mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("friends").setIndicator("Friends"), f1);
mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), f2);
Run Code Online (Sandbox Code Playgroud)

所以问题是:是否可以手动预先创建片段,FragmentTabHost或者是否有必要完全采用不同的方法?