你应该如何实现那种例如Honeycomb Gmail客户端使用的滑动?
可以TransactionManager通过添加和删除片段自动处理这个,由于模拟器是幻灯片,所以很难测试这个:)
问题:当我按下按钮时,我看到C的几分之一秒,然后显示G.To防止这种情况我试图在答案的帮助下停止动画,但即使动画停止,C仍然可见几分之一秒片段.
在更换C顶部的片段时,有没有更好的方法来设计片段流或解决这些电影的方法?
android android-fragments fragmentmanager fragment-backstack
我们有一个包含SlidingMenu(https://github.com/jfeinstein10/SlidingMenu)的Activity,其中有三个选项,我们称之为A,B1,C1.这些对应于我们在活动中显示的片段.当您从SlidingMenu中选择其他选项时,我通过FragmentManager将新片段替换为新片段.
从片段B1你可以去另外两个,让我们称他们为B2和B3.在这里,我们希望Back键从B2 - > B1或B3 - > B1,所以我调用transaction.addToBackStack(null).如果我们在B2或B3上从SlidingMenu中选择一个选项,我们想要清除后面的堆栈,所以我使用这个问题中建议的代码使用调用popBackStack()的片段清除堆栈直到它清楚.
到现在为止还挺好.
从Fragment C1你可以去Fragment C2.由于C1/C2更像是我使用的主/细节设计
fragmentTransaction.setCustomAnimations(R.animator.slide_in_from_right,
R.animator.slide_out_to_left, R.animator.slide_in_from_left,
R.animator.slide_out_to_right);
Run Code Online (Sandbox Code Playgroud)
添加幻灯片动画,当C2从右侧滑入时,C1向左滑动,反之亦然.在C2上按回车键将我们带回C1,带有反向动画,一切都很好.
但
如果你从SlidingMenu中选择A或B1,我们popBackStack()从后面的堆栈中删除C1,那么它会向右滑动C2,这看起来很奇怪.我想要做的是清除后台堆栈而不运行动画,但我找不到办法做到这一点.我试过调用popBackStackImmediate(),但这似乎没有任何区别.
作为替代方案,我想我可以完全避免调用addToBackStack,而是通过Activity.onBackPressed()手动处理用户按Back键,但也许有一个我看不到的解决方案?