Android:如何预先填充片段backstack?

时间:2015-01-22 22:56:21

标签: android navigation back-stack

我有一个应用程序,其中有一个Activity加载片段......在初始启动时它会加载片段A.从A开始,用户可以导航到片段B;从B导航到片段C.每次更换片段时,我都会添加ToBackStack。后退按钮按照预期导航,C到B到A,如果再次按下,则退出应用程序。

我还使用Dropbox数据存储来保存我的应用程序的所有数据,这样我就可以在设备之间无缝移动并同步所有数据。这似乎运作良好。作为我的数据的一部分,我存储了最后显示的片段。现在,当我的应用程序在第二台设备上启动时,它会正确显示最近打开的片段。这很好,但是,我不再有一个后台。例如,如果应用程序显示片段C设备1然后我在设备2上启动应用程序,因为预期片段C显示在设备2上。但是当我按下后退按钮时,应用程序退出而不是显示片段B.(这是有道理的,因为在设备2上应用程序仅加载片段C。)

所以我的问题是:我如何预先填充我的baskstack,这样当按下设备2上的后退按钮时,它会导航到片段B?

2 个答案:

答案 0 :(得分:0)

查看TaskStackBuilder或活动XML声明android:parentActivityName

答案 1 :(得分:0)

我通过提交多个片段事务来解决了。为我工作

supportFragmentManager.beginTransaction().replace(R.id.content, Fragment1(), "f1").addToBackStack(null).commit()
supportFragmentManager.beginTransaction().replace(R.id.content, Fragment2(), "f2").addToBackStack(null).commit()
supportFragmentManager.beginTransaction().replace(R.id.content, Fragment3(), "f3").addToBackStack(null).commit()
supportFragmentManager.beginTransaction().replace(R.id.content, Fragment4(), "f4").commit()

但是,对于更清洁,更好的解决方案,您还可以查看Jetpack Navigation UI