Android Fragment的复用

        在多个标题栏对应的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的代码编写。

你可能感兴趣的:(Android Fragment的复用)