Fragment采用单例模式,单列模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。在fragmentment中通过getActivity得到的上下文只能得到fragment的相关布局,而无法得到drawable中的资源。要得到该资源可以通过单列模式传进去。如下文。
public class FragmentSign extends Fragment {
// @ViewInject(R.id.lv_sign)
private ListView mListView;
private AdapterSign mAdapterSign;
private Context context;
private Activity mActivity;
private String name[];
private String date[];
private View mView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//绑定layout文件
mView =inflater.inflate(R.layout.sign_index,container, false);
mListView = (ListView)mView.findViewById(R.id.lv_sign);
Bundle args = getArguments();
if (args != null) {
name = args.getStringArray("name");
date= args.getStringArray("date");
}
initAdapter();
mListView.setAdapter(mAdapterSign);
return mView;
}
public static FragmentSign newInstance(String[] pString,String[] pDate){
FragmentSign newFragmentSign = new FragmentSign();
Bundle _bundle = new Bundle();
_bundle.putStringArray("name",pString);
_bundle.putStringArray("date",pDate);
newFragmentSign.setArguments(_bundle);
return newFragmentSign;
}
public void initAdapter(){
mAdapterSign = new AdapterSign(getActivity(),getModule());
//mListView = (ListView)mView.findViewById(R.id.lv_sign);
}
public List<Module> getModule(){
ArrayList<Module> _module = new ArrayList<Module>();
for(int i =0;i<name.length;i++){
Module _modulea = new Module();
_modulea.setName(name[i]);
_modulea.setDate(date[i]);
_module.add(_modulea);
}
return _module;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
}