从其他片段更改 ViewPager 的当前片段

Change the current fragment of ViewPager from other fragment

我有一个 Fragment,其中包含 viewpager

ViewPager 我还有 3 个碎片,Fragment-AFragment-B,和 Fragment-C

里面Fragment A我有一个Button,在ButtononClick()我想把当前项目改成Fragment C

如何实现?请帮忙

viewpager.postDelayed(new Runnable() {

        @Override
        public void run() {
            viewpager.setCurrentItem(2);
        }
    }, 100);

此处 2 是您的片段 C 索引。

更新

无需在Fragment A中创建viewpager对象。 只需创建一个在包含 ViewPagerActivityFragment 中扩展的接口,并将其实现到 Fragment A.

在您的 clickHandler 中添加此方法 viewpager.setCurrentItem(int index)

如果按钮不在主片段中,您将必须定义一个接口以在主片段和子片段(即片段 A B C)之间进行通信。

public interface GoToNextFragment {
void onGoToFragment(int index);
}

您的 MainFragmet 必须实现此接口及其附带的方法:

public class MainFragment extends Fragment implements GoToNextFragment {
//Your regular methods...
@Override
public void onGoToFragment(index) {
if (myAdapter != null) {
myAdapter.setCurrentItem(index);
}
}

仍然在您的 MainFragment 中,在您的片段上设置界面:

fragment1.setInterface(this);
fragment2.setInterface(this);

在您的片段中,添加 setInterface 方法:

private GoToNextFragment mInterface;

public void setInterface(GoToNextFragment i) {
mInterface = i;
}

最后在片段a中,触发效果:

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mInterface != null) {
  mInterface.onGoToFragment(2);
}
});