通常开发一个中大型应用,可能会有好几个工程师各司其职,分别开发不同的模块,并且都有自己的Activity,有时我们会碰到一些麻烦的问题,比如不同成员写的Activity之间如果要跳转,常常会不知道如何传递正确的参数(有时的确需要)。代码如下:
public class SourceActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.source);
Intent i = new Intent(this, TargetActivity,class);
i.putExtra("username", "abcdefg");
i.putExtra("password", "123456");
startActivity(i);
}
}
public class TargetActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.target);
String username = getIntent().getStringExtra("username");
String password = getIntent().getStringExtra("password");
}
}
在上面这种传统的跳转Activity的代码中,我们发现A->B之间,必须有某种协议来协定需要传送的参数的名字(如username)和类型。那就必须借助于在目标Activity中写上注释或阅读源代码才能知道如何才能正确的打开目标Activity。
那么,到底有什么方法可以非常方便的打开一个新的Activity,而无须去口头沟通或费时的查看注释或源代码呢?总结自己的项目经验,可参考如下代码:
public class SourceActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.source);
TargetActivity.startTheActivity(this, "abcdefg", "123456");
}
}
public class TargetActivity extends Activity{
/*
* 跳转到这个Activity,username是用户名,password是密码
*/
public static void startTheActivity(Context context, String username, String password) {
Intent i = new Intent(context, TargetActivity,class);
i.putExtra("username", "abcdefg");
i.putExtra("password", "123456");
context.startActivity(i);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.target);
String username = getIntent().getStringExtra("username");
String password = getIntent().getStringExtra("password");
}
}
如上代码,其中只是使用了一些小的技巧,但却使得在团队合作中不同的人负责不同的Activity和模块,正确无缝的跳转到其他成员写的Activity。