目的: 当有多个Fragment使用时,提供一个抽象基类BaseFragment, 来封装一下方法,使其Fragment的使用简单化。
解决问题:
1: 使用getActivtiy() 为空的情况,
2: 简化了onCreateView, 只需要提供布局id就好了
像添加和移除fragment的情况,这里没有列出,后续。。。
package com.ttjjttjj.recyclerviewtest.fragment;
import android.app.Activity;
import android.content.Context;
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;
/**
* Created by Administrator on 2016/5/31 0031.
*
* 基类fragment
*
* @author tj
*
*/
public abstract class BaseFragment extends Fragment {
protected Activity mActivity;
/**
* 获得全局的,防止使用getActivity()为空
* @param context
*/
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.mActivity = (Activity)context;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container
, Bundle savedInstanceState) {
View view = LayoutInflater.from(mActivity)
.inflate(getLayoutId(), container, false);
initView(view, savedInstanceState);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData();
}
/**
* 该抽象方法就是 onCreateView中需要的layoutID
* @return
*/
protected abstract int getLayoutId();
/**
* 该抽象方法就是 初始化view
* @param view
* @param savedInstanceState
*/
protected abstract void initView(View view, Bundle savedInstanceState);
/**
* 执行数据的加载
*/
protected abstract void initData();
}
如果有什么其他好的意见的,希望留言,一起学习,谢谢!
网友评论