自定义BaseActivity和ActivityManager

该博客介绍如何创建自定义的BaseActivity作为所有Activity的父类,并实现ActivityManager来有效管理Activity,以提高项目代码的组织和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了方便使用和管理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;
		}
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值