我有3个页面与活动和视图寻呼机相关联。现在我构建它就像我的活动 - > A-B-C片段。在我的活动中,我为寻呼机调用了寻呼机适配器代码,如下所示:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
final int PAGE_COUNT = 3;
// Tab Titles
private String tabtitles[] = new String[] { "Tab1", "Tab2", "Tab3" };
Context context;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
switch (position) {
// Open FragmentTab1.java
case 0:
HomeFragment fragmenttab1 = new HomeFragment();
return fragmenttab1;
// Open FragmentTab2.java
case 1:
CameraFragment fragmenttab2 = new CameraFragment();
return fragmenttab2;
// Open FragmentTab3.java
case 2:
FriendsFragment fragmenttab3 = new FriendsFragment();
return fragmenttab3;
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
return tabtitles[position];
}
}
现在,我想从A调用c片段,但它应该是片段的新实例,而且我想从我的一些活动中调用frag B ...因为这也是如何启动片段的新实例。 ....
答案 0 :(得分:4)
在您的片段中创建ViewPager的对象,并为您在活动中使用的ViewPager提供参考。
ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
然后致电
viewPager.setCurrentItem(2);
在您的情况下,它会导航您到FriendsFragment。
答案 1 :(得分:0)
只需跟踪FRAGMENT_POSITION并创建像这样的实例
添加
//0 is for your first fragment , 1 for second and so on
public final static int [] FRAGMENT_POSITION = {0, 1, 2};
在您的适配器类中,现在只需调用
来获取实例HomeFragment frag = (HomeFragment) mAdapter.getItem(FRAGMENT_POSITION[0]); //or 1 or 2
为了调用来自不同活动的片段的方法,在该活动中传递适配器的实例并执行与上面相同的操作
答案 2 :(得分:0)
在关闭mViewPager.setCurrentItem(1)之前使用它;当你打开它时,这会将你的viewpager引导到那个特定的片段