Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/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 在多个片段中实现片段中的制表符_Android_Android Fragments_Android Activity_Tabs_Fragment - Fatal编程技术网

Android 在多个片段中实现片段中的制表符

Android 在多个片段中实现片段中的制表符,android,android-fragments,android-activity,tabs,fragment,Android,Android Fragments,Android Activity,Tabs,Fragment,我有很多碎片的独家活动。 在其中一个片段中,我现在必须在其中包含几个选项卡。我能想到的方法是: 解决方案1-仅为此创建新活动,然后实施ViewPager: 我对该解决方案的主要担忧是: 到目前为止,在我的活动中,我有以下流程: 片段1->片段2->片段3->片段4->等等 现在,假设我必须在片段3中实现这些选项卡 从片段2开始,我开始了一个新的活动,放置了一个viewpager(其中一个选项卡中有片段3,其他选项卡中有片段3)。然后我需要能够展示片段4。但是由于应用程序中的所有片段都放在原始活动

我有很多碎片的独家活动。 在其中一个片段中,我现在必须在其中包含几个选项卡。我能想到的方法是:

解决方案1-仅为此创建新活动,然后实施ViewPager:

我对该解决方案的主要担忧是: 到目前为止,在我的活动中,我有以下流程: 片段1->片段2->片段3->片段4->等等

现在,假设我必须在片段3中实现这些选项卡

从片段2开始,我开始了一个新的活动,放置了一个viewpager(其中一个选项卡中有片段3,其他选项卡中有片段3)。然后我需要能够展示片段4。但是由于应用程序中的所有片段都放在原始活动上,因此会混淆流程,甚至更糟。换言之,导致:

  • 它不会显示片段4等等,因为正在运行的活动将是保持tabs屏幕的活动,而所有片段都放在原始活动上,而原始活动将放在堆栈中
  • 无法从片段4返回到带有选项卡的屏幕,然后从选项卡屏幕返回到片段2,然后返回到片段1
  • 解决方案2-结果活动(带查看页面):

    “为选项卡创建的活动”屏幕可以是返回到原始活动的活动。因此,流程如下所示: 片段2->结果的新活动->将结果发送回原始活动,说明它现在需要启动片段4->原始活动打开片段4

    然而,在这种情况下,如果我从片段4返回,它会将我返回到片段2,而不是选项卡屏幕(3)

    解决方案3-选项卡布局:

    这似乎是最好的解决办法。 然而,要使用它,我需要
    getChildFragmentManager()
    ,它需要api 17和更高版本。我的api是16。 现在,如果我使用
    getSupportChildFragmentManager()
    我将不得不使用fragmentv4。问题是我的所有片段都是本机的,我不能将片段3更改为v4,因为之前的片段和后面的片段也必须是v4。更改所有片段不是一个选项,因为我有大约50个片段

    解决方案3的另一个问题 我遇到的问题是,它崩溃并打印:
    错误膨胀类android.support.design.widget.TabLayout
    我尝试创建一个名为values-v21的新文件夹,并在其中为选项卡布局创建了一个styles.xml,但由于某些原因,这没有起到任何作用


    我希望我说清楚了

    从解决方案3派生出另一个解决方案。这是为了保持您当前的导航(fragment1->fragment2->等等),并构建一个片段,用简单的布局而不是嵌套的片段来保存ViewPager。通过这种方式,您将避免:导航问题、有问题的嵌套api在版本16(您计划支持)上不存在,并且您还将避免重构以使用支持片段api


    如果以后您不再支持版本16,您可以重构嵌套片段中的每个简单布局,并使用本机getChildFragmentmanager()。

    更改所有片段不是一个选项,因为我有100多个片段。-这将转化为Android Studio中的几个按键。真正的问题是为什么你有超过100个碎片?大的应用程序。对不起,我刚查过,这个数字有点夸张。实际数量约为50个片段(不包括不同的视图或内容视图)。还是很多。坦率地说,我有点不愿意把它们全部改成v4,这样就不会出现任何新的问题/bug/崩溃。。所以我不确定将它们全部转换成v4有多安全。但我可能错了。感谢前面提到的解决方案1,如果片段4仅从包含ViewPager的片段3开始,我认为将其拆分为2个活动没有问题(1直到片段3,另一个继续)。解决方案2实际上不是一个选项。您还有从解决方案3派生的解决方案4:创建一个包含ViewPager的片段,并使ViewPager仅使用普通布局(无嵌套片段),将这些布局的处理留给保存ViewPager的片段。这将为您赢得时间,直到API 16被遗忘,您可以对其进行重构以使用本机嵌套片段。关于解决方案1,如果我将其拆分为2个活动,则会出现问题,因为当我要打开片段4时,将在原始活动(位于后堆栈中)上提交,因此用户不会看到片段4。我错过什么了吗?关于你提供的第二个解决方案,我不确定我是否理解。如何在片段中实现ViewPager?难道不可能只在活动上吗?片段只能实现选项卡布局。否?你会从你提供的两种解决方案中选择什么?再次感谢。好的,我选择了第二个选项,即使用带有布局的viewpager,而不是片段。但是,似乎我必须使用PagerTabStrip来表示页面标题。有没有其他方法可以让我在屏幕上看到我所有的标签,而不需要侧移,也不需要像在PagerStrip中那样部分地移动?出于某种原因,我不断遇到这种“错误膨胀表格布局”崩溃。。我已经将styles.xml添加到values-v21文件夹(似乎对每个人都有效的解决方案)中,但没有任何帮助。。