如何从 ViewPager 片段中打开另一个片段?

How to open another fragment from inside a ViewPager fragment?

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

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

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

现在我想 link FragmentFour 和 FragmentOne 通过 onClickListener 和我之前创建的按钮。在 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 滑动访问,但我不想这样。

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

您的代码正在 ViewPager:

中用 FragmentFour 替换 FragmentOne
transaction.replace(R.id.fragment_one, fragFour);

这会导致带有 FragmentFourFragmentTwoFragmentThree

的 ViewPager

您似乎想为 FragmentFour 开始一个新的 Activity。从 FragmentOne 中的 onClick 处理程序,启动一个新的 activity,如下所示:

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

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

问题现已解决。我只需要对我的代码进行一些更改。在 onClickListener 内部,我像这样更改了我的代码-

之前:

FragmentManager fragmentManager = getChildFragmentManager();

之后:

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();

在 fragment_four.xml 文件的相对布局中:

android:background="@color/bgcolor"
android:clickable="true"
android:focusable="true"