如何从不同 Activity 调用视图寻呼机中的片段?
How to call fragment which is in view pager from different Activity?
我有 3 个页面与 activity 和查看寻呼机相关联。现在我已经像我的 activity -> A-B-C 片段一样构建了它。在我的 activity 中,我调用了寻呼机的视图寻呼机适配器代码如下:
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 片段,但它应该是片段的新实例,而且我还想从我的一些 activity... 中调用片段 B...开始片段的新实例.....
只需跟踪 FRAGMENT_POSITION 并像这样创建实例
添加
//0 is for your first fragment , 1 for second and so on
public final static int [] FRAGMENT_POSITION = {0, 1, 2};
在您的适配器 class 中,现在只需调用
即可获取实例
HomeFragment frag = (HomeFragment) mAdapter.getItem(FRAGMENT_POSITION[0]); //or 1 or 2
并且为了从不同的活动中调用片段的方法,在该 activity 中传递适配器的实例并执行与上述相同的操作
在您的片段 A 中创建 ViewPager 对象并为其提供您在 activity.
中使用的 ViewPager 的引用
ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
然后打电话
viewPager.setCurrentItem(2);
在您的情况下,它将导航至 FriendsFragment。
在关闭之前使用它 mViewPager.setCurrentItem(1);当您打开它时,这会将您的 viewpager 定向到该特定片段
我有 3 个页面与 activity 和查看寻呼机相关联。现在我已经像我的 activity -> A-B-C 片段一样构建了它。在我的 activity 中,我调用了寻呼机的视图寻呼机适配器代码如下:
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 片段,但它应该是片段的新实例,而且我还想从我的一些 activity... 中调用片段 B...开始片段的新实例.....
只需跟踪 FRAGMENT_POSITION 并像这样创建实例
添加
//0 is for your first fragment , 1 for second and so on
public final static int [] FRAGMENT_POSITION = {0, 1, 2};
在您的适配器 class 中,现在只需调用
即可获取实例HomeFragment frag = (HomeFragment) mAdapter.getItem(FRAGMENT_POSITION[0]); //or 1 or 2
并且为了从不同的活动中调用片段的方法,在该 activity 中传递适配器的实例并执行与上述相同的操作
在您的片段 A 中创建 ViewPager 对象并为其提供您在 activity.
中使用的 ViewPager 的引用ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
然后打电话
viewPager.setCurrentItem(2);
在您的情况下,它将导航至 FriendsFragment。
在关闭之前使用它 mViewPager.setCurrentItem(1);当您打开它时,这会将您的 viewpager 定向到该特定片段