ViewPager + Fragment處理兩個Fragment的點選跳轉以及之間的傳遞資料
阿新 • • 發佈:2019-01-24
處理兩個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的點選跳轉。