CrimeLab单例+SingleFragmentActivity抽象类

来源:互联网 发布:小米手机3g网络慢 编辑:程序博客网 时间:2024/05/20 21:44

这里写图片描述

单例CrimeLab

public class CrimeLab {    private static CrimeLab sCrimeLab;    public List<Crime> mCrimes;    public static CrimeLab get(Context context)    {        if(sCrimeLab==null) {            sCrimeLab = new CrimeLab(context);        }        return  sCrimeLab;    }    public List<Crime> getCrimes(){        return mCrimes;    }    public Crime getCrime(UUID id){        for(Crime crime:mCrimes){            if(crime.getId().equals(id)){                return crime;            }        }        return null;    }    private CrimeLab(Context context){        mCrimes=new ArrayList<>();        for(int i=0;i<100;++i){            Crime crime=new Crime();            crime.setTitle("Crime#"+i);            crime.setSolved(i%2==0);            mCrimes.add(crime);        }    }}

单例是特殊java类,仅存在一个实例,应用能在内存里存多久单例就能存多久,不用管activity,fragment的生命周期,方便获取
两个要素:私有构造方法,get()方法

List java有序数组类,可获取,新增,删除元素
常见list实现是ArrayList
推荐在声明时使用List接口类型,这样使用时可方便选取别的list实现比如linkedList

SingleFragmentActivity抽象类
继承自它的Activity方法就只要重写createNewFragment部分即可

public abstract class SingleFragmentActivity extends FragmentActivity{    //不能用private因为要在子类里去实现嘛    protected abstract Fragment createNewFragment();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_crime);        FragmentManager fragmentManager=getSupportFragmentManager();        Fragment fragment=fragmentManager.findFragmentById(R.id.fragment_container);        if(fragment==null){            fragment=createNewFragment();            fragmentManager.beginTransaction().add(R.id.fragment_container,fragment).commit();       }    }}
原创粉丝点击