Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有片段开关的FragmentTabHost_Android_Android Fragments_Android Tabhost - Fatal编程技术网

Android 带有片段开关的FragmentTabHost

Android 带有片段开关的FragmentTabHost,android,android-fragments,android-tabhost,Android,Android Fragments,Android Tabhost,我对FragmentTabHost做片段替换感到困惑。我有一些页面有一些视图需要单击,然后转发到另一个片段,但在我替换该片段,然后单击其他选项卡后,片段重叠在一起 这是我的切换功能: public void fragmentSwitch(FragmentActivity context, Fragment fragment, String fragmentTag){ FragmentManager fragmentManager = context.getSupportFragmentM

我对FragmentTabHost做片段替换感到困惑。我有一些页面有一些视图需要单击,然后转发到另一个片段,但在我替换该片段,然后单击其他选项卡后,片段重叠在一起

这是我的切换功能:

public void fragmentSwitch(FragmentActivity context, Fragment fragment, String fragmentTag){
    FragmentManager fragmentManager = context.getSupportFragmentManager();
    fragmentManager.beginTransaction()
            //.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)
            .replace(android.R.id.tabcontent, fragment, fragmentTag)
            //.addToBackStack(null)
            .commit();
    fragmentManager.executePendingTransactions();
}

我认为FragmentTabHost不支持替换选项卡上的片段。文档中没有提到这一点,在源代码中,它看起来像用于每个选项卡的TabInfo对象正在缓存片段实例。如果直接转到FragmentManager并替换片段,没有人会告诉FragmentTabHost关于它的信息,因此它仍然会保留旧片段。我该如何处理它??更正缓存?在我最后一条评论之前,我寻找了一个API,在那里你可以告诉标签关于新片段,但我没有看到。想到的两个选项是:1)不替换片段,只配置当前片段(不确定这是否适用于您),或2)将FragmentPagerAdapter与操作栏导航选项卡一起使用。这是谷歌正在推动的方法,有了支持库,它也可以在旧设备上工作。如果你告诉我哪一个更适合你,我可以给你更多的指导。@Bruce我想我必须搜索如何使用viewpager:)非常感谢