我有一个Android应用程序,显示大量实时数据卡在一个大型滚动活动上。
现在我想使用片段将其分成两个更简单的屏幕,其中任何时候屏幕上只能有一个片段。
我在片段上阅读了很多内容并观看了几个视频,但在我开始撕掉我的代码以将其转换为片段之前,我想知道以下内容。
如果我创建了两个片段A和B,那么在显示片段B时,数据会进入片段A.控制活动是否仍然可以与片段A通信,即使它在屏幕外也能提供数据?或者我必须在某处保存数据,然后当用户切换到片段A时,我给片段A提供要显示的数据,同时保存片段B的输入数据,现在它将在屏幕外显示?
问题是,现在我没有保存任何数据,因为一切都在一个屏幕上,所以数据进来我只是显示它,但如果我切换到使用片段我不知道我是否可以通过传递做同样的事情即使它们不在同一时间在屏幕上,也会将数据存储到片段中。
感谢。
答案 0 :(得分:0)
如果在Activity中检索具有多个异步请求的数据,则可以为每个请求创建一个片段,并将相关的检索操作移动到该片段中(可能是oncreateView()
方法)。然后,您可以在父Activity中使用ViewPager(可能使用TabLayout)来使用所有这些片段。因此,您的活动仅处理设置ViewPager并将其余部分留给片段。
ViewPager一次显示一个页面,但它也可以初始化其他片段,甚至在它们显示之前。您可以使用ViewPager的setOffscreenPageLimit()
方法来增加该范围。
如果您需要片段和活动之间的通信通道,您可以创建回调机制,如here所述。