ViewPager + Fragment处理两个Fragment的点击跳转以及之间的传递数据

来源:互联网 发布:淘宝详情页面模板 编辑:程序博客网 时间:2024/05/02 04:36

处理两个Fragment的点击跳转与在自定义组件中设置监听的处理方式差不多,由于两个Fragment都有一个共同的Activity而Activity通过其Viewpager的setCurrentItem(int position)可以设置显示第几个Fragment。所有在Activity中定义一个内部接口,并把要具体执行跳转的方法封装在这个接口中,并设置一个参数即可以具体设置显示哪个Fragment的ViewPager:

 public interface Fragment2Fragment{        public void gotoFragment(ViewPager viewPager);    }

同时再该Activity中定义一个该接口类型的成员变量,并为其设置setter方法。

 private  Fragment2Fragment fragment2Fragment;    public void setFragment2Fragment(Fragment2Fragment fragment2Fragment){        this.fragment2Fragment = fragment2Fragment;    }

最后再给该Activity设置一个调用此接口中定义此方法的方法:

 public void forSkip(){        if(fragment2Fragment!=null){            fragment2Fragment.gotoFragment(viewPager);        }    }

Fragment端的代码:
FragmentA :
在Fragment中可以通过getActivity()获取来Activity。然后我们给该Activity注入其定义的Fragment2Fragment的变量fragment2Fragment此时我们必须实现Fragment2Fragment接口中定义的方法即具体的跳转方法,参数是ViewPager所以此时你可以设置你想要跳转到哪个Fragment中:

  final MainActivity mainActivity = (MainActivity) getActivity();            mainActivity.setFragment2Fragment(new MainActivity.Fragment2Fragment() {                @Override                public void gotoFragment(ViewPager viewPager) {                    //fragment传递数据                    mainActivity.setFragmentArgu(string);                    viewPager.setCurrentItem(0);                }            });  mainActivity.forSkip();

最后通过该Activity调用其中的forSkip方法,此时就会执行Fragment2Fragment接口的实现类的gotoFragment方法,这个方法由子类实现,这样就完成了两个Fragment的点击跳转。

4 2