在android文件管理器中,我可以创建任意多的嵌套文件夹,每个文件夹都在另一个文件夹内。重点是,当我关闭每个文件夹时,前一个视图被正确地恢复。
假设每个文件夹都是一个活动,我怎么能在用户命令上有无限的嵌套活动(比如创建一个新文件夹),当用户按下后退按钮时正确恢复?
我知道我可以用一个单一的布局创造无限的活动,但是他们不会在按下后退键时正常恢复。例如,当我为每个视图使用适配器时,它会使视图内的子视图(文件夹)膨胀。在这种情况下,android只是恢复上次的膨胀视图为所有的后退按钮按下。
使用多个Activities
来实现这个用例并不是一个最佳的解决方案,因为如果您有一个深度嵌套的文件结构,您将很快耗尽内存。相反,当用户导航到一个目录时,只需加载该目录的内容并填充UI,向后导航也是如此。如果您使用ListView
(或RecyclerView
)来列出目录内的文件,那么您所要做的就是在每次用户向后或向前导航时将新选择目录的文件传递给Adapter
。
一些伪代码来说明这个想法:
void onListItemClick() {
File selectedDir = adapter.getSelectedDir();
File[] selectedDirContents = selectedDir.list();
adapter.setFiles(selectedDirContents);
}