我知道在使用Fragments
时,建议使用Activities
代替Bottom Navigation
。由于当前的设计,我希望避免转换所有Activities
每个标签都是Activity
。当您点按任何标签时,它会启动活动startActivity(new Intent(getApplication(), TabActivityName.class));
。问题是当您在这些选项卡之间切换时,Activity
的状态将丢失。
例如:
fragment
。discographyFragment
仍在展示,但它又回到主要艺术家名单fragment
)我尝试的事情:
Activities
更改为android:launchMode="singleTask"
和android:alwaysRetainTaskState="true"
如果您要切换到在当前activity
之前启动的标签,则仅保留数据。Activities
更改为android:launchMode="singleInstance"
和android:alwaysRetainTaskState="true"
但这会产生创建多个应用标签的不良影响。关于如何在切换标签时保持Activity
的状态以及加载Fragment
的任何其他想法?
答案 0 :(得分:2)
您可以在活动中使用FragmentStatePagerAdapter。但是,您应该更新到片段,它们旨在处理您的情况。迁移并不是那么糟糕,大多数逻辑都可以简单地复制过来。
答案 1 :(得分: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年历史了,但也许其他人认为此解决方案很有帮助。