package cn.bingoogolapple.weibo.ui.fragment; import android.app.Activity; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.LayoutRes; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import cn.bingoogolapple.titlebar.BGATitlebar; import cn.bingoogolapple.weibo.App; /** * 作者:王浩 邮件:bingoogolapple@gmail.com * 创建时间:15/7/3 上午1:28 * 描述: */ public abstract class BaseFragment extends Fragment implements View.OnClickListener { protected String TAG; protected App mApp; protected View mContentView; protected BGATitlebar mTitlebar; public void onAttach(Activity activity) { super.onAttach(activity); TAG = this.getClass().getSimpleName(); mApp = App.getInstance(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { onUserVisible(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 避免多次从xml中加载布局文件 if (mContentView == null) { initView(savedInstanceState); setListener(); processLogic(savedInstanceState); } else { ViewGroup parent = (ViewGroup) mContentView.getParent(); if (parent != null) { parent.removeView(mContentView); } } return mContentView; } protected void setContentView(@LayoutRes int layoutResID) { mContentView = LayoutInflater.from(mApp).inflate(layoutResID, null); } /** * 初始化View控件 */ protected abstract void initView(Bundle savedInstanceState); /** * 给View控件添加事件监听器 */ protected abstract void setListener(); /** * 处理业务逻辑,状态恢复等操作 * * @param savedInstanceState */ protected abstract void processLogic(Bundle savedInstanceState); /** * 当fragment对用户可见时,会调用该方法,可在该方法中懒加载网络数据 */ protected abstract void onUserVisible(); /** * 需要处理点击事件时,重写该方法 * * @param v */ public void onClick(View v) { } /** * 查找View * * @param id 控件的id * @param <VT> View类型 * @return */ protected <VT extends View> VT getViewById(@IdRes int id) { return (VT) mContentView.findViewById(id); } }