所以我有一个包含 2 个片段 ( FragA, FragB ) 的导航图,我希望能够通过向左或向右滑动来从一个片段移动到另一个片段。我有一个将 FragA 连接到 FragB 的操作,我已经使用它通过单击按钮从 FragA 淡入到 FragB。但是,我希望能够在 FragA 上向左滑动以到达 FragB 并反向返回。
编辑:我正在尝试使用导航而不是 ViewPager,因为 FragA 还通过导航图连接到另一个片段。现在我正在尝试将导航组件和 viewpager 结合起来,但我想要一个只有导航组件的解决方案。
答案 0 :(得分:0)
显然,在导航旁边使用 ViewPager 并没有那么复杂。我是这样做的。
在 MainActivity onCreate
这正是我想要的,而不是我认为我需要的方式。
你可以在这里停下来,但现在突然出现一个小问题。如果您按下后退按钮希望撤消导航图中的导航操作,该应用将改为在主要活动级别执行按下后退按钮预期执行的操作。
只需将其复制到导航图的片段中,按回按即可撤消将您带到的导航操作
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
popNavBackStack();
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
public void popNavBackStack(){
NavController journalNavHost = NavHostFragment.findNavController(this);
journalNavHost.popBackStack();
}