1. 程式人生 > >Android Fragment的複用

Android Fragment的複用

        在多個標題欄對應的Fragment中可能會遇到相同的佈局。如果對每一個標題欄對應的Fragment都做網路請求以及介面卡的程式碼編寫未免顯得太過冗餘。這時可以在作為用下面的方法減少大量的程式碼,節省更多開發的時間。

在進行Fragment複用的Activity或Fragment中的新增如下程式碼:

RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
StringRequest stringRequest = new StringRequest(Urls.BASE_CHINA, new Response.Listener<String>() {
    @Override
public void onResponse(String response) {
    //新增Fragment的集合
        fragmentList = new ArrayList<>();
    //新增標題欄標題的集合
        titlelist = new ArrayList<>();
        for (int i = 0; i < tablist.size(); i++) {
            String title = tablist.get(i).getTitle();
      //新增標題
            titlelist
.add(title);       //獲取到每一個Fragment對應的url utlList.add(tablist.get(i).getUrl());
      //新增作為複用的Fragment對應的url
            fragmentList.add(JingBianFragment.newInstance(utlList.get(i)));


        }
    //Fragment與Tablayout聯用的介面卡適配
        TabAdapter tabAdapter = new TabAdapter(getChildFragmentManager(), titlelist
, fragmentList); vp.setCurrentItem(0); vp.setAdapter(tabAdapter); tab.setupWithViewPager(vp); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); requestQueue.add(stringRequest);
在作為具體複用的Fragment中:

//定義一個靜態方法

public static JingBianFragment newInstance(String url){
    JingBianFragment jingBianFragment = new JingBianFragment();
    Bundle bundle = new Bundle();
    bundle.putString("key",url);
    jingBianFragment.setArguments(bundle);
    return jingBianFragment;
}
//在初始化資料的方法中新增這一行程式碼:
String key = (String) getArguments().get("key");

簡單幾步解決多個Fragment的程式碼編寫。