在多个标题栏对应的Fragment中可能会遇到相同的布局。如果对每一个标题栏对应的Fragment都做网络请求以及适配器的代码编写未免显得太过冗余。这时可以在作为用下面的方法减少大量的代码,节省更多开发的时间。
在进行Fragment复用的Activity或Fragment中的添加如下代码:
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
StringRequest stringRequest = new StringRequest(Urls.BASE_CHINA, new Response.Listener() { @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的代码编写。