在Android应用开发中,有时需要在一个Activity(如接下来要介绍的MainActivity)中调用另外一个Activity(RegisterActivity),当用户在第二个Activity中选择完成后,程序自动返回到第一个Activity中,第一个Activity必须能够获取并且显示用户在第二个Activity中选择的结果;或者,在第一个Activity中将一些数据传递到第二个Activity,由于某些原因,又要返回到第一个Activity中。例如:程序中经常出现的“返回上一步”功能,可以通过Intent和Bundle来实现,与在两个Activity之间交换数据不同的是:
(1)此处需要使用startActivityForResult()方法来启动另外一个Activity。
startActivityForResult(intent,CODE);
(2)打开MainActivity,定义一个名称为CODE的常量,用于设置requestCode请求码。如本例中的:
final static int CODE = 1;
(3)同时打开第一个Activity(MainActivity)重写onActivityResult()方法。当第二个Activity(RegisterActivity)被关闭时,这个onActivityResult()方法会被调用,同时执行方法体中相应的操作。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == CODE && resultCode == RegisterActivity.CODE)
{
((EditText)findViewById(R.id.pwd)).setText(""); //清空“密码”编辑框
((EditText)findViewById(R.id.repwd)).setText(""); //清空“确认密码”编辑框
}
}
(4)打开RegisterActivity中,在onCreate()方法中,获取“返回上一步”按钮,并为其添加单击事件监听器。再重写onClick()方法,首先设置返回的结果码,并返回调用该Activity的Activity(即MainActivity),然后关闭当前的Activity。
Button back = (Button)findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setResult(CODE);
finish();
}
});
运行程序的相关截图:
1.MainActivity,填写相关的注册信息
2.由MainActivity启动RegisterActivity显示注册的相关信息
3.点击RegisterActivity界面中的“返回”按钮返回到MainActivity界面,同时执行onActivityResult()中的相关操作
(清空刚才填写注册信息中的“密码”和“确认密码”编辑框)