繁体   English   中英

Android:如何预先填充片段堆栈?

[英]Android: How can you pre-populate the fragment backstack?

我有一个应用程序,其中有一个活动会加载片段…在初次启动时,它会加载片段A。 然后从B导航到片段C。每次替换片段时,我都会执行addToBackStack。 后退按钮将按您期望的那样导航,从C到B到A,如果再次按回去,则应用程序退出。

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

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

我通过提交多个片段事务解决了这个问题 为我工作

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导航UI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM