开发过程中通常会碰到这些问题:Activity越来越臃肿,界面中会有越来越多的业务代码,请求代码,上层的耦合越来越严重,维护起来会相当麻烦。项目开发时如果能有一个好的结构是至关重要的,比如最近的MVP架构主要就可以把Activity中的业务代码抽取出来,使Activity层的代码充分解耦,但是实现起来也需要耗费大量精力。这里介绍一种简单的方法来抽取Activity层的业务代码,就是利用Fragment来创建可以复用的模块。
为什么用Fragment
Fragment拥有和Activity很相似的生命周期,onCreate() , onDestroy() 还有自己的生命周期 onAttach() ,onCreateView 。Fragment本身如果不去重写onCreateView()的话是不会有界面的,从而可以把它当做一个纯粹的数据源,或者一个接口模块来进行复用,同时我们还可以利用FragmentManager来很方便的进行通信。
示例
作为dota爱好者这里简单写一个英雄选择的模块
先来实现数据模块 DataFragment,说道英雄选择肯定要有文字和图片
public class DataFragment extends Fragment {
public static final String TAG = "data";
public class DataItem{
private String title;
private int resId;
public DataItem(String title, int resId) {
this.title = title;
this.resId = resId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getResId() {
return resId;
}
public void setResId(int resId) {
this.resId = resId;
}
}
public static DataFragment newInstance() {
DataFragment fragment = new DataFragment();
return fragment;
}
public DataFragment() {
// Required empty public constructor
}
private ArrayList<DataItem> dataList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataList = new ArrayList<>();
dataList.add(new DataItem("敌法师",R.mipmap.df));
dataList.add(