【问题标题】:How to call fragment which is in view pager from different Activity?如何从不同的Activity调用视图寻呼机中的片段?
【发布时间】:2015-04-10 09:11:00
【问题描述】:

我有 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 片段,但是,它应该是片段的新实例,并且我想从我的一些活动中调用片段 B……这也是如何启动片段的新实例。 ....

【问题讨论】:

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


    【解决方案1】:

    在您的片段 A 中创建 ViewPager 对象并为其提供您在活动中使用的 ViewPager 的引用。

    ViewPager  viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
    

    然后打电话

    viewPager.setCurrentItem(2);
    

    在您的情况下,它会将您导航到 FriendsFragment。

    【讨论】:

    • 感谢@MEENAXI的解决方案
    【解决方案2】:

    只需跟踪 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
    

    对于从不同活动调用片段的方法,在该活动中传递您的适配器实例并执行与上述相同的操作

    【讨论】:

    • 对不起,我是 Fragments 的新手,所以如果你能帮助我了解我是如何离开的,请跟踪 Fragment 的位置.. thx
    • 感谢 Abhishek 的解决方案
    【解决方案3】:

    在关闭 mViewPager.setCurrentItem(1) 之前使用它;当您打开它时,这会将您的 viewpager 引导到该特定片段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多