我需要实现一个类似于Instagram Android客户端的导航系统。
以下是要求:
1. 应该始终在屏幕底部保留一个永久选项卡。 2. 当用户在其中一个选项卡中向更深层次导航,比如到达详细视图,然后切换到另一个选项卡,再返回到先前的选项卡时,应显示最后显示的(更深层次的)详细视图,并且在返回按钮按下时,应迭代回到所述选项卡的主视图。
我已经想出了以下解决方案:
1. 我有一个MainActivity,在底部显示菜单。 2. 选择菜单项后,将显示相应的Fragment。 3. 当用户在Fragment中进一步导航时,它会要求MainActivity根据给定的条件更改其内容,从而更改所显示的Fragment。 4. 通过调用FragmentTransaction的addToBackStack()方法,我将所有Fragment更改添加到后退堆栈中。
但是,我目前卡在这一点上,无法弄清如何在返回按钮按下时切换片段,以及如何处理当显示深层次视图而不是选项卡的主视图时的选项卡导航。
我的想法是为每个选项卡使用自己独立的“后退堆栈实现”。当用户在选项卡中导航更深时,我会生成一个唯一的“标签”,并在调用addToBackStack()时使用该标签,并将标签放入我实现的“后退堆栈”中。如果用户再次导航到此选项卡,则可以检查该选项卡的“后退堆栈”中是否有任何标签,如果有,则可以在MainActivity的fragmentManager中查找真正的后退堆栈中的条目,并切换到它。
我还没有想出更好的方法。是否有更好/更简单的方法来实现所需的行为?我错过了什么吗?(我知道这是Android世界中非常糟糕的应用程序设计,但这是另一个问题。)
以下是要求:
1. 应该始终在屏幕底部保留一个永久选项卡。 2. 当用户在其中一个选项卡中向更深层次导航,比如到达详细视图,然后切换到另一个选项卡,再返回到先前的选项卡时,应显示最后显示的(更深层次的)详细视图,并且在返回按钮按下时,应迭代回到所述选项卡的主视图。
我已经想出了以下解决方案:
1. 我有一个MainActivity,在底部显示菜单。 2. 选择菜单项后,将显示相应的Fragment。 3. 当用户在Fragment中进一步导航时,它会要求MainActivity根据给定的条件更改其内容,从而更改所显示的Fragment。 4. 通过调用FragmentTransaction的addToBackStack()方法,我将所有Fragment更改添加到后退堆栈中。
但是,我目前卡在这一点上,无法弄清如何在返回按钮按下时切换片段,以及如何处理当显示深层次视图而不是选项卡的主视图时的选项卡导航。
我的想法是为每个选项卡使用自己独立的“后退堆栈实现”。当用户在选项卡中导航更深时,我会生成一个唯一的“标签”,并在调用addToBackStack()时使用该标签,并将标签放入我实现的“后退堆栈”中。如果用户再次导航到此选项卡,则可以检查该选项卡的“后退堆栈”中是否有任何标签,如果有,则可以在MainActivity的fragmentManager中查找真正的后退堆栈中的条目,并切换到它。
我还没有想出更好的方法。是否有更好/更简单的方法来实现所需的行为?我错过了什么吗?(我知道这是Android世界中非常糟糕的应用程序设计,但这是另一个问题。)