package org.gulup.view; import java.util.Observable; import java.util.Observer; import org.gulup.annotation.ViewFinder; import org.gulup.core.GBaseAction; import org.gulup.core.GData; import org.gulup.utils.Constant; import org.gulup.utils.ScreenUtil; import org.gulup.utils.ViewUtil; import android.app.Activity; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.RelativeLayout; public abstract class GBaseFragment extends Fragment implements Observer{ public int id; public View view; /*public ScreenUtil su; protected int screenHeight; protected int screenWidth;*/ @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewUtil.injectFragment(this, getActivity()); view = inflater.inflate(id, container,false); //initScreen(getActivity()); //ViewUtil.inject(this, view ,getActivity()); ViewUtil.injectViewFiled(this, new ViewFinder(view, getActivity())); init(); return view; } /** * 初始化Screen参数 * */ /*public void initScreen(Activity activity){ su = new ScreenUtil(); su.setWidthAndHighByActivity(activity); this.screenHeight = su.getScreenHeight(); this.screenWidth = su.getScreenWidth(); }*/ /** * 將action與view綁定起來的方法,交由註解綁定,不需要顯式調用 * @param action 需要與view綁定的action * @return 返回綁定是否成功 */ public boolean setAction(GBaseAction action){ if(action!=null){ action.addObserver(this); }else{ return false; } return true; } /** * action請求成功後的回調方法,需要重寫 * @param form 回調成功後返回的數據,裏面包含請求標識requestType和返回的數據data */ public abstract void requestSuccess(GData data); /** * 請求失敗後的回調方法,需要重寫 * @param requestType 回調失敗後回傳的請求標識 */ public abstract void requestFail(GData data); /** * 需要在設置橫豎屏佈局之前初始化的動作,都寫在這裏 */ public void init(){} /** * 控件默认调用的点击事件 * @param view */ public void onClick(View view){} /** * 數據回調處理,通知界面數據已經更新 * */ @Override public void update(Observable observable, Object data) { GData resData = (GData)data; if(resData.isSuccess()){ requestSuccess(resData); }else{ requestFail(resData); } } }