package com.luckymonkey.ui.base; import java.io.Serializable; import java.util.HashMap; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.Toast; import com.luckymonkey.R; import com.luckymonkey.util.SpUtil; import com.luckymonkey.util.Utils; import com.umeng.analytics.MobclickAgent; public abstract class BaseFragment extends Fragment { protected Context mContext; protected LayoutInflater mInflater = null; protected LinearLayout containtView; protected View contentView; protected boolean mSlideFinish = false; protected int mDownX = 0; protected int finishAnimId = 0; protected Intent mIntent; boolean isStartActivity = false; protected Toast mSToast = null; protected Toast mLToast = null; public SpUtil mSpUtil; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this.getActivity(); mInflater = LayoutInflater.from(mContext); mSpUtil = SpUtil.getInstance(mContext); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // 调用顺序 onInit(); onFindViews(); onInitViewData(); onBindListener(); } /** * 初始�?优先顺序�?br/> * <font color=red>onInit();</font><br/> * onFindViews();<br/> * onInitViewData();<br/> * onBindListener();<br/> */ public abstract void onInit(); /** * 查找控件 <br/> * 优先顺序�?br/> * onInit();<br/> * <font color=red>onFindViews();</font><br/> * onInitViewData();<br/> * onBindListener();<br/> */ public abstract void onFindViews(); /** * 初始化控件内�?优先顺序�?br/> * onInit();<br/> * onFindViews();<br/> * <font color=red>onInitViewData();</font><br/> * onBindListener();<br/> */ public abstract void onInitViewData(); /** * 注册控件事件 优先顺序�?br/> * onInit();<br/> * onFindViews();<br/> * onInitViewData();<br/> * <font color=red>onBindListener();</font><br/> */ public abstract void onBindListener(); public void setTitle(String title) { } /** * 打开滑动�?��此Activity的功�?<功能详细描述> * * @param isOpen * @see [类�?�?方法、类#成员] */ public void setSlide2Finish(boolean isOpen) { mSlideFinish = isOpen; } /** * 结束此activity时动�?从左边移到右�?<功能详细描述> * * @see [类�?�?方法、类#成员] */ public void finishWithLeftAnim() { finishAnimId = R.anim.from_left_out; } /** * 结束此activity时动�?从上�?��移动 <功能详细描述> * * @see [类�?�?方法、类#成员] */ public void finishWithDownAnim() { finishAnimId = R.anim.from_up_out; } /** * 直接启动�?��activity <功能详细描述> * * @param cla * @see [类�?�?方法、类#成员] */ public void startActivity(Class<? extends Activity> cla) { if (isStartActivity) return; isStartActivity = true; initIntent(cla); startActivity(); } /** * 启动带一个外部数据的activity <功能详细描述> * * @param key * @param value * @param cla * @see [类�?�?方法、类#成员] */ public void startActivity(String key, Object value, Class<? extends Activity> cla) { if (isStartActivity) return; isStartActivity = true; initIntent(cla); putExtra(key, value); startActivity(); } public void initIntent(Class<? extends Activity> cla) { mIntent = new Intent(mContext, cla); } /** * intent装载外部数据,可以使用int String boolean Serializable long double <功能详细描述> * * @param key * @param value * @see [类�?�?方法、类#成员] */ public void putExtra(String key, Object value) { if (mIntent != null && key != null && value != null) { if (value instanceof Integer) { mIntent.putExtra(key, (Integer) value); } else if (value instanceof String) { mIntent.putExtra(key, (String) value); } else if (value instanceof Serializable) { mIntent.putExtra(key, (Serializable) value); } else if (value instanceof Boolean) { mIntent.putExtra(key, (Boolean) value); } else if (value instanceof Long) { mIntent.putExtra(key, (Long) value); } else if (value instanceof Double) { mIntent.putExtra(key, (Double) value); } } } public void startActivity() { if (mIntent != null) startActivity(mIntent); } /** * 启动带一个外部数据的activity <功能详细描述> * * @param key * @param value * @param cla * @see [类�?�?方法、类#成员] */ public void startActivityForResult(String key, Object value, Class<? extends Activity> cla, int requestCode) { if (isStartActivity) return; isStartActivity = true; initIntent(cla); putExtra(key, value); startActivityForResult(requestCode); } /** * 直接启动�?��activity <功能详细描述> * * @param cla * @see [类�?�?方法、类#成员] */ public void startActivityForResult(Class<? extends Activity> cla, int requestCode) { if (isStartActivity) return; isStartActivity = true; initIntent(cla); startActivityForResult(requestCode); } public void startActivityForResult(int requestCode) { if (mIntent != null) startActivityForResult(mIntent, requestCode); } /** * Toast 短时间显�?<功能详细描述> * * @param message * @see [类�?�?方法、类#成员] */ public void showToastShort(String message) { Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); } public void showToastShort(int id) { Toast.makeText(mContext, id, Toast.LENGTH_SHORT).show(); } /** * Toast 长时间显�?<功能详细描述> * * @param message * @see [类�?�?方法、类#成员] */ public void showToastLong(String message) { Toast.makeText(mContext, message, Toast.LENGTH_LONG).show(); } /** * Toast 长时间显�?<功能详细描述> * * @param message * @see [类�?�?方法、类#成员] */ public void showToastLong(int id) { Toast.makeText(mContext, id, Toast.LENGTH_LONG).show(); } /** * Toast <功能详细描述> * * @param str资源ID * @see [类�?�?方法、类#成员] */ public void showToast(int strResID) { String msgStr = this.getResources().getString(strResID); showToastLong(msgStr); } /** * 显示提示 * * @param message */ public void showToast(String message) { showToastLong(message); } // jiang add protected Dialog progressDialog; protected void runOnUiThreadSafety(Runnable runnable) { Utils.runOnUiThreadSafety(getActivity(), runnable); } protected void toCloseProgressMsg() { runOnUiThreadSafety(new Runnable() { @Override public void run() { closeProgressDialog(); } }); } protected Dialog getProgressDialog(String msg) { ProgressDialog fddProgressDialog = new ProgressDialog(getActivity()); fddProgressDialog.setMessage(msg); return fddProgressDialog; } private void closeProgressDialog() { Utils.clossDialog(progressDialog); } protected void toShowProgressMsg(final String msg) { runOnUiThreadSafety(new Runnable() { @Override public void run() { if (progressDialog != null && progressDialog.isShowing()) { if (progressDialog instanceof ProgressDialog) { ((ProgressDialog) progressDialog).setMessage(msg); } else { try { progressDialog.getClass().getMethod("setMessage", String.class).invoke(progressDialog, msg); } catch (Exception e) { e.printStackTrace(); } } } else { progressDialog = getProgressDialog(msg); progressDialog.show(); } } }); } public void recycleBitmap(Bitmap bitmap) { if (bitmap != null && !bitmap.isRecycled()) { bitmap.recycle(); } bitmap = null; } @Override public void onPause() { super.onPause(); // MobclickAgent.onPause(mContext); } @Override public void onResume() { super.onResume(); isStartActivity = false; // MobclickAgent.onResume(mContext); } /** * 友盟打点记录 * * @param record */ protected void mobClickEvent(String record) { MobclickAgent.onEvent(mContext, record); } protected void mobClickEvent(String id, String param) { HashMap<String, String> map = new HashMap<String, String>(); map.put("type", param); MobclickAgent.onEvent(mContext, id, map); } }