自定義BaseActivity和ActivityManager

爲了方便使用和管理Activity,於是建立兩個類,一個抽象類BaseActivity作爲所有activity的父類,一個ActivityManager用力管理activity,可作爲以後項目的基類


1、ActivityManager

public class ActivityManager {
	
	private static ActivityManager mActivityManager;
	
	private List<Activity> mActivities=new ArrayList<Activity>();
	//將構造方法私有化,所以不能通構造方法來初始化ActivityManager
	private ActivityManager(){};
	
	//採用單例模式初始化ActivityManager,使只初始化一次
	public static ActivityManager getInstance(){
		if(mActivityManager==null){
			mActivityManager=new ActivityManager();
		}
		return mActivityManager;
	}
	//添加activity
	public void addActivity(Activity activity){
		mActivities.add(activity);
	}
	//移除activity
	public void removeActivity(Activity activity){
		mActivities.remove(activity);
	}
	//將activity全部關閉掉
	public void clear(){
		for(Activity activity:mActivities){
			activity.finish();
		}
	}

}



2、BaseActivity

public abstract class BaseActivity extends Activity{
	//抽象化方法找控件id
	public abstract void findId();
	//抽象化方法設置監聽器
	public abstract void setListener();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//onCreate方法時,使用activityManager將此activity添加到list裏面
		ActivityManager.getInstance().addActivity(this);
	}
	
	@Override
	public void setContentView(int layoutResID) {
		// TODO Auto-generated method stub
		super.setContentView(layoutResID);
		findId();
		setListener();
	}

	@Override
	public void setContentView(View view) {
		// TODO Auto-generated method stub
		super.setContentView(view);
		findId();
		setListener();
	}
	
	@Override
	public void setContentView(View view, LayoutParams params) {
		// TODO Auto-generated method stub
		super.setContentView(view, params);
		findId();
		setListener();
	}
	
	public void finishAll(){
		ActivityManager.getInstance().clear();
	}
}


使用示例

public class SecondActivity extends BaseActivity implements OnClickListener{
	
	private Button mSendButton;
	private static final String TAG="Secondctivity";

	@Override
	public void findId() {
	
		mSendButton=(Button) findViewById(R.id.main_sendBtn);
	}

	@Override
	public void setListener() {
		mSendButton.setOnClickListener(this);
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.main_sendBtn:
			Toast.makeText(SecondActivity.this, "點擊了", Toast.LENGTH_LONG).show();
			Log.i(TAG, "點擊了");
			break;

		default:
			break;
		}
	}

}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章