从其他片段更改 ViewPager 的当前片段
Change the current fragment of ViewPager from other fragment
我有一个 Fragment
,其中包含 viewpager
。
在 ViewPager
我还有 3 个碎片,Fragment-A
,Fragment-B
,和 Fragment-C
。
里面Fragment A
我有一个Button
,在Button
onClick()
我想把当前项目改成Fragment C
。
如何实现?请帮忙
viewpager.postDelayed(new Runnable() {
@Override
public void run() {
viewpager.setCurrentItem(2);
}
}, 100);
此处 2 是您的片段 C 索引。
更新
无需在Fragment A中创建viewpager对象。
只需创建一个在包含 ViewPager
的 Activity
或 Fragment
中扩展的接口,并将其实现到 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);
}
});
我有一个 Fragment
,其中包含 viewpager
。
在 ViewPager
我还有 3 个碎片,Fragment-A
,Fragment-B
,和 Fragment-C
。
里面Fragment A
我有一个Button
,在Button
onClick()
我想把当前项目改成Fragment C
。
如何实现?请帮忙
viewpager.postDelayed(new Runnable() {
@Override
public void run() {
viewpager.setCurrentItem(2);
}
}, 100);
此处 2 是您的片段 C 索引。
更新
无需在Fragment A中创建viewpager对象。
只需创建一个在包含 ViewPager
的 Activity
或 Fragment
中扩展的接口,并将其实现到 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);
}
});