写在前面
之前,我启动活动的方法是首先通过Intent构建出当前的“意图”,然后调用startActivity()或startActivityForResult()方法将活动启动起来,如果有数据需要从一个活动传递到另一个活动,也是借助Intent来完成。但是,有时候与别人一起开发的时候会有对接问题的出现,这时候自己去阅读SecondActivity中的代码,或者询问负责编写SecondActivity的同学,会有点麻烦。其实只要换一种写法就可以解决这个问题。
最佳写法
修改SecondActivity中的代码,添加函数actionStart()如下;
public static void actionStart(Context context, String data1, String data2) { Intent intent = new Intent(context, SecondActivity.class); intent.putExtra("param1", data1); intent.putExtra("param2", data2); context.startActivity(intent); }
在actionStart()方法中完成了Intent的构建,另外所有SecondActivity中需要的数据都是通过actionStart()方法中的参数传递过来的,然后把他们存储到Intent中,最后调用startActivity()方法启动SecondActivity。
由此,也简化了启动活动的代码,现在只需要一行代码『SecondActivity.actionStart(FirstActivity.this, "data1", "data2");』就可以启动SecondActivity了,如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); Button btn1 = (Button) findViewById(R.id.id_btn1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SecondActivity.actionStart(FirstActivity.this, "data1", "data2");//这里 } }); }
解释好处
我这样做有什么好处呢?最重要的一点就是一目了然,SecondActivity所需要的数据全部在方法的参数中体现了出来,这样即使不阅读SecondActivity中的代码,或者询问负责编写SecondActivity的同学也可以非常清晰的知道启动SecondActivity需要传递的是哪些数据。另外简化了启动活动的代码。养成这样一个好习惯,给编写的每个活动都添加类似的启动方法,不仅可以让启动活动变得非常简单,还可以节省不少开发合作者来询问我的时间。