如何从不同的Activity调用视图寻呼机中的片段?

时间:2015-04-10 09:11:01

标签: android android-fragments android-viewpager fragment android-fragmentactivity

我有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 ...因为这也是如何启动片段的新实例。 ....

3 个答案:

答案 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引导到那个特定的片段