0

我知道建议在Fragments使用. 由于当前的设计,我想避免必须转换所有ActivitiesBottom NavigationActivities

设计:我正在使用Bottom Navigation如图所示的条形图在此处输入图像描述

每个选项卡都是一个Activity. 当您点击任何选项卡时,它会启动活动,startActivity(new Intent(getApplication(), TabActivityName.class));. 问题是当您在这些选项卡之间切换时,状态Activity会丢失。

例如:

  1. 单击音乐选项卡(显示艺术家列表)
  2. 单击音乐选项卡中的艺术家以显示唱片fragment
  3. 切换到视频选项卡
  4. 切换回音乐选项卡。(我希望艺术家discographyFragment仍然在展示,但它又回到了艺术家的主要列表中fragment

我尝试过的事情:

  1. 将每个选项卡更改Activitiesandroid:launchMode="singleTask"andandroid:alwaysRetainTaskState="true"仅当您切换到在当前 . 之前启动的选项卡时才会保留数据activity
  2. 将每个选项卡更改Activitiesandroid:launchMode="singleInstance"android:alwaysRetainTaskState="true"但这会产生创建多个应用程序选项卡的不良效果。

关于如何保持切换选项卡时加载的状态Activity和加载的状态的任何其他想法?Fragment

4

2 回答 2

1

您可以在活动中使用FragmentStatePagerAdapter 。但是,您应该更新到片段,它们旨在处理您的情况。迁移并没有那么糟糕,大部分逻辑都可以简单地复制过来。

于 2017-05-16T21:40:46.713 回答
0

我当前的应用程序具有相同的设计。底部菜单有不同的图标来启动活动,每个活动都有片段。

FLAG_ACTIVITY_REORDER_TO_FRONT我在启动底部菜单活动之前通过使用解决了这个问题。

    case R.id.ic_house:
                        Intent intent1=new Intent(context, HomeActivity.class);
                        intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                        context.startActivity(intent1);
                        break;
    case R.id.ic_more:
                        Intent intent2=new Intent(context, MoreActivity.class);
                        intent2.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                        context.startActivity(intent5);
                        break;

这个问题已经有 3 年历史了,但也许其他人会觉得这个解决方案很有帮助。

于 2020-03-15T02:23:47.003 回答