android使用带有

android使用带有,android,fragment,savestate,Android,Fragment,Savestate,在我的android应用程序中,我使用的是滑动菜单,这就是为什么我的所有内容都是片段,我正在更改这些片段,并在FrameLayout的一个活动中显示它们。 问题是我有从internet、listview和其他加载的数据片段,如果我运行我的应用程序,listview将被数据填充,然后如果我转到另一个片段,然后按下手机上的后退按钮,我们将返回带有该listview的片段,但它将再次下载数据,初始化适配器并将其添加到listview 如何保存所有这些数据,并在从另一个片段转到此片段时再次显示这些数据?

在我的android应用程序中,我使用的是滑动菜单,这就是为什么我的所有内容都是片段,我正在更改这些片段,并在FrameLayout的一个活动中显示它们。 问题是我有从internet、listview和其他加载的数据片段,如果我运行我的应用程序,listview将被数据填充,然后如果我转到另一个片段,然后按下手机上的后退按钮,我们将返回带有该listview的片段,但它将再次下载数据,初始化适配器并将其添加到listview


如何保存所有这些数据,并在从另一个片段转到此片段时再次显示这些数据?

将数据缓存在数据库中,仅当缓存为空或过时时才下载(即保留下载时间戳,并在X小时/天过去时重新下载,如果需要的话)

您在哪里读取片段中的数据?从活动中分离片段不应该杀死整个片段,而应该只杀死UI部分-请参见片段生命周期,发生的调用在onCreateView和onDestroyView之间。如果您仅在onCreate和onCreateView中读取数据,只是为了扩大布局并填充布局,那么一切都应该正常。

在onActivityCreated()中,我正在初始化我的listview并执行扩展AsynkTask的内部类,它将下载所有数据,并在onPostExecute()方法中向listview添加适配器,这就是问题所在。您应该在onCreate中创建并启动任务,因为它不会像onActivityCreated()那样被多次调用。onCreateView将初始化listview并填充它。