创建页面,原则经常改动的需要变换的可以单独写出来
如下子页面:
public class HomePager extends BasePager {
public HomePager(Activity activity) {
super(activity);
}
@Override
public void initData() {
tvTitle.setText("天下");
TextView textView = new TextView(mActivity);
textView.setText("首页");
textView.setTextSize(25);
textView.setTextColor(Color.RED);
textView.setGravity(Gravity.CENTER);
//向Framelayout动态加载布局
flContent.addView(textView);
}
}
basepager
/**
* 主页面下的多个子页面的基类
* Created by admin on 2015/12/23.
*/
public class BasePager {
public Activity mActivity;
public View mRootView; //布局对象
public TextView tvTitle; //标题对象
public FrameLayout flContent; //内容
public BasePager(Activity activity) {
mActivity = activity;
initViews();
}
/**
* 初始化布局
*/
public void initViews() {
mRootView = View.inflate(mActivity, R.layout.base_pager, null);
tvTitle = (TextView) mRootView.findViewById(R.id.tv_title);
flContent = (FrameLayout) mRootView.findViewById(R.id.fl_content);
}
/**
* 初始化数据
*/
public void initData() {
}
}
base_pager.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@mipmap/title_red_bg">
<ImageButton
android:id="@+id/btn_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/img_menu"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="xxxx"
android:textSize="22sp"
android:id="@+id/tv_title"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<FrameLayout
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
</LinearLayout>
下面用到了部分XUtils的ViewUtils,UI绑定和时间的绑定
public class ContentFragment extends BaseFragment {
<!--这句是不用find ID-->
@ViewInject(R.id.rg_rb)
private RadioGroup radioGroup;
@ViewInject(R.id.vp_content)
private ViewPager viewPager;
private ArrayList<BasePager> mPagerList;
@Override
public View initViews() {
View view = View.inflate(mActivity, R.layout.fragment_content, null);
// radioGroup = (RadioGroup) view.findViewById(R.id.rg_rb);
<!--这句是对事件的注入-->
ViewUtils.inject(this, view);
return view;
}
@Override
public void initData() {
radioGroup.check(R.id.rb_home);//默认勾选首页
//初始化5个子页面
mPagerList = new ArrayList<>();
mPagerList.add(new HomePager(mActivity));
mPagerList.add(new NewsPager(mActivity));
mPagerList.add(new SmartPager(mActivity));
mPagerList.add(new GovPager(mActivity));
mPagerList.add(new SettingPager(mActivity));
viewPager.setAdapter(new ContentAdapter());
}
class ContentAdapter extends PagerAdapter {
@Override
public int getCount() {
return mPagerList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
BasePager pager = mPagerList.get(position);
container.addView(mPagerList.get(position).mRootView);
pager.initData();//初始化数据
return mPagerList.get(position).mRootView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
}
有利于管理Fragment
可以实现子类都要实现的方法
用抽象方法是为了让子类一定去实现
public abstract class BaseFragment extends Fragment {
public Activity mActivity;
//fragment创建
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = getActivity();
}
//处理fragment布局
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return initViews();
}
//依附的activity创建完成
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData();
}
@Override
public void onDestroy() {
super.onDestroy();
}
//之类必须去实现初始化布布局的方法
public abstract View initViews();
//初始化数据,可以不实现
public void initData(){
}