从子片段更改ViewPager片段

Mat*_*att 5 android android-fragments android-viewpager android-tablayout

我有一个使用带有几个片段的TabLayout的ViewPager.我想从其中一个ViewPager片段中单击一个按钮,并使用选项卡名称将用户定向到另一个选项卡/片段.

单击该按钮时,我希望TabLayout更改以及显示与该选项卡关联的片段.我还需要发送附加数据以显示新片段.

我无法访问ViewPager setCurrentItem(int index).理想情况下,我想与父母沟通以完成请求.

Luk*_*uke 9

您应该在父级中编写一个方法(包含ViewPager和子片段),如下所示:

public void setPagerFragment(int a)
{
    pager.setCurrentItem(a);
}
Run Code Online (Sandbox Code Playgroud)

这会将ViewPager中的当前Fragment设置为指定的片段.然后,您可以从子Fragment调用此方法:

int newFrag = 0; //the number of the new Fragment to show
ParentActivity parent = (ParentActivity) getActivity();
parent.setPagerFragment(newFrag);
Run Code Online (Sandbox Code Playgroud)

关于使用要在新片段上显示的请求发送附加数据,您可以在父级中创建另一个方法,在子级中调用,这将在父级中设置一些数据,父级可以在设置新片段时使用该方法.

例如在父母中:

public void setExtraData(Object data)
{
    dataFromChildFrag = data;
}
Run Code Online (Sandbox Code Playgroud)

并在孩子中使用这样:

String data = "My extra data"; //the number of the new Fragment to show
ParentActivity parent = (ParentActivity) getActivity();
parent.setExtraData(data);
Run Code Online (Sandbox Code Playgroud)

最后,如果父实际上是Fragment本身而不是Activity,只需替换以下所有引用:

ParentActivity parent = (ParentActivity) getActivity();
Run Code Online (Sandbox Code Playgroud)

至:

ParentFragment parent = (ParentFragment) getParentFragment();
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!