1. 程式人生 > >ViewPager + Fragment處理兩個Fragment的點選跳轉以及之間的傳遞資料

ViewPager + Fragment處理兩個Fragment的點選跳轉以及之間的傳遞資料

處理兩個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的點選跳轉。