Activity以及fragment的简单重写

对于软件开发上的一些思考。

估计所有的程序每天都会写很多的重复的代码,不知道写这些代码的时候有没有去思考。如何才能少些一些代码而且又能提高效率呢。

问题

1,每天大量重复的代码

2,每次代码都重新写出错的概率很高

3,浪费大量的时间(有这些时间我们可以思考一些新的问题,学习一些新的技术或者多休息休息,泡泡妞也是可以的啊)

解决办法

1,最低级办法就是去copy 这些代码。

2,将代码利用继承抽象等技术将一些公共的代码抽取出来,将变化的东西抽象出来。

第一种办法就不说了,是程序员都知道怎么做对吧。

下面说下第二种办法,就以activity 和 fragment为例来说   大大的提高我们的开发效率。

直接上代码:

package com.example.androidtest.base;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
/**
 * 将activity 中经常写的代码 进行格式化
 * @author 曹阳龙
 * 
 * 2015-9-13
 */
public abstract class BaseActivity extends Activity{
    //资源管理
	protected Resources resources;
	//上下环境  
    protected Context context;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		beforeSetContent();
		setContentView(getcontentView());
		context = this;
		resources = getResources();
		onCreate();
	}
	/**
	 * 用于设置布局文件
	 * @return
	 */
	public abstract int getcontentView();
	/**
	 * oncreat 改为内部执行
	 */
	private void onCreate(){
		initView();
		initData();
		initListener();
	}
	/**
	 * 提供这个方法原因  ,  主要  有一些代码需要在  setcontent 之前调用  如 : window窗口的设置
	 */
	public void beforeSetContent(){
		
	}
	
	/**
	 * 首次   必先初始化  view 
	 */
	public abstract void initView();
	/**
	 * 初始化数据   从网络 获取数据  数据添加到  view  等逻辑 工作
	 */
	public abstract void initData();
	/**
	 * 初始化  view listener 的工作
	 */
	public abstract void initListener();
}
下面是basefragment 的代码   其实和上面基本上差不多

package com.cyl.androidtest.base;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
 * fragment  代码进行格式化
 * @author 曹阳龙
 * 
 * 2015-9-13
 */
public abstract class BaseFragment extends Fragment {
    protected Context context;
    @Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return inflater.inflate(setContentView(), container, false);
	}
	@Override
	public void onViewCreated(View view, Bundle savedInstanceState) {
		context = view.getContext();
		onViewCreated(view);
	}
	public Context getContext() {
		return context;
	}
	public void onViewCreated(View view){
		initView(view);
		initData();
		initListener();
	}
	public abstract int setContentView();
	
	/**
	 * 首次   必先初始化  view 
	 */
	public abstract void initView(View view);
	/**
	 * 初始化数据   从网络 获取数据  数据添加到  view  等逻辑 工作
	 */
	public abstract void initData();
	/**
	 * 初始化  view listener 的工作
	 */
	public abstract void initListener();
}


其实上面的代码很好理解,我们简单看下注视就可以了,然后在项目快速开发的时候,我们只要继承与baseActivity活baseFragment  实现对应的  抽象方法,initview 中 获取对应的组建实例就ok,  在initdata 中可以写一些数据的初始化。initListener我们可以在这里写我们需要实现的响应事件。

对于baseactivity 简单写个例子。

package com.example.androidtest;

import com.example.androidtest.base.BaseActivity;
/**
 * 在这里继承与baseActivity   对应的方法  ide 就会直接生成了  我只需要写我们的业务逻辑代码就 ok了
 * @author cyl
 *
 * 2016-2-12
 */
public class TestBaseActivity extends BaseActivity {

	@Override
	public int getcontentView() {
		//这里写我们的布局文件
		return R.layout.test_activity_layout;
	}

	@Override
	public void initView() {
		//这里 findviewbyid 初始化组建  button  textview  viewpager imageview  等等
	}

	@Override
	public void initData() {
		//settext   初始化 view上的数据  ,从网络获取数据
	}

	@Override
	public void initListener() {
		//给组建设置  响应的事件
	}

}

今天就说到这里。


猜你喜欢

转载自blog.csdn.net/tiandiyinghun/article/details/50655584