用start(context,object)方法启动activity并传递参数

371 查看

Activity之间传递参数可以用intent,bundle传递。但是,当一个项目由多人合作完成时,上述方法则增加了沟通交流成本,且可能因参数命名等原因产生错误。
解决方法如下:
A Activity启动B Activity并向B传递参数,只需在B中添加start方法,传入context和params进行启动;

public class XXXActivity extends Activity {
    ...
    //声明静态变量,该Object可以是自己定义的容器
    private static Object mOb = null;
    //启动时把变量赋值,进入activity后可直接调用
    public static void start(Context context, Object ob) {
        context.startActivity(new Intent(context, XXXActivity.class));
        mOb = ob;
    }
    //Activity销毁后要把静态变量归空
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mOb = null;
    }
    ...
}

用法:
在A中使用B的start方法,并传入参数;

XXXActivity.start(context,ob);

优势:
无需查看XXXActivity传值逻辑,只需调用start方法就知道XXXActivity所需要的传值