网站建设的设备/百度关键词排名突然下降很多
处理两个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() {@Overridepublic void gotoFragment(ViewPager viewPager) {//fragment传递数据mainActivity.setFragmentArgu(string);viewPager.setCurrentItem(0);}});mainActivity.forSkip();
最后通过该Activity调用其中的forSkip方法,此时就会执行Fragment2Fragment接口的实现类的gotoFragment方法,这个方法由子类实现,这样就完成了两个Fragment的点击跳转。