Android Fragment的複用
阿新 • • 發佈:2019-02-13
在多個標題欄對應的Fragment中可能會遇到相同的佈局。如果對每一個標題欄對應的Fragment都做網路請求以及介面卡的程式碼編寫未免顯得太過冗餘。這時可以在作為用下面的方法減少大量的程式碼,節省更多開發的時間。
在進行Fragment複用的Activity或Fragment中的新增如下程式碼:
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
StringRequest stringRequest = new StringRequest(Urls.BASE_CHINA, new Response.Listener<String>() { @Overridepublic 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的程式碼編寫。