首页 > 解决方案 > 如何从 ViewPager 片段中打开另一个片段?

问题描述

我按照本教程在滑动视图(ViewPager)中构建了一个包含三个片段的应用程序。

https://c1ctech.com/android-viewpager-example-to-create-sliding-screens/

该应用程序已成功构建。然后我在 FragmentOne 中添加了一个按钮。并且还使用 fragment_four.xml 布局文件创建了另一个名为 FragmentFour 的片段。

现在我想通过我之前创建的按钮通过 onClickListener 将 FragmentFour 与 FragmentOne 链接起来。在 FragmentOne 中,该按钮将被单击,它将启动 FragmentFour。为了实现这一点,在 onClickListener 我添加了这些代码-

FragmentFour fragFour = new FragmentFour();
                    FragmentManager fragmentManager = getChildFragmentManager();
                    FragmentTransaction transaction = fragmentManager.beginTransaction();
                    transaction.replace(R.id.main_frameLayout, fragFour);
                    transaction.addToBackStack(null);
                    transaction.commit();

但是在运行应用程序之后,当我从 FragmentOne 内部单击该按钮时,FragmentFour 的布局与 FragmentOne 的布局重叠。并且 FragmentTwo 和 FragmentThree 可以通过从 FragmentFour 滑动访问,但我不想要这个。

如果这里有什么问题,请帮助我。

标签: androidandroid-fragmentsandroid-viewpager

解决方案


您的代码正在FragmentOne替换FragmentFourViewPager

transaction.replace(R.id.fragment_one, fragFour);

这导致 ViewPager 带有FragmentFour,FragmentTwoFragmentThree

好像你想开始一个新Activity的 for FragmentFour。从您的onClick处理程序中FragmentOne,开始一个新的活动,如下所示:

getActivity().startActivity(new Intent(context, FragmentFourActivity.class));

FragmentFourActivity是一个Android Activity(例如AppCompatActivity),其布局包含FragmentFour。如果不确定如何操作,请访问https://developer.android.com/training/basics/firstapp/starting-activity 。


推荐阅读