如何从 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);
这会导致带有 FragmentFour
、FragmentTwo
和 FragmentThree
的 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"
我按照本教程在滑动视图 (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);
这会导致带有 FragmentFour
、FragmentTwo
和 FragmentThree
您似乎想为 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"