Android学习之路之startActivityForResult和setResult的使用

ntent intent = new Intent(A.this,B.class);
//注意
startActivityForResult(intent,code);
//code为自己定义的对应的值,可以当标识使用,假如有多个按钮要使用这个功能,则判断code即可判断按钮需跳到指定的activity
//需要重写OnActivityResult()方法
protected void onActivityResult(int requestCode,int resultCode,Intent data){
//这里判断code
if(requestCode==code){
//使用resultCode判断返回的值,可以使用data(返回的值)
if(resultCode==B.code)
{
//执行相应的程序
if(resultCode==B.RESULT_CODE!){
edit.setText(data.getStringExtra(name));}
}}}

在开发android的时候,有时候会需要这样的功能,我在Activity A中(简称A)要填写某资料,点击选择按钮,跳转到Activity B(简称B),在B中选择好数据后,B自动消失,A中的编辑框则显示对应的数据。

这是在学习Intent数据传输时一个方法,感觉像Spinner一样,现在就介绍我对以上需求的做法

首先写界面

界面A和界面B,一个是编辑框,一个是数据列表(这里我用的是ListView)

这里需要定义一个常量CODE,可以理解是识别码,判断提交的是哪个按钮还有获取的哪个数据,下面会介绍:

MainActivity中定义REQUEST_CODE,有几个按钮就定义到几,这里我定义REQUEST_CODE1=1;

在button添加监听事件的时候这样写

注意上述代码中是startActivityForResult(intent,RESULT_CODE1);而不是startActivity(intent);这里是区别,注意一下

然后开始写B界面的Activity

这里定义public RESULT_CODE1=1 使用public是为了让A可以调用这个code

//先定义code,方便源activity使用!
public static final int code = 1;
在为B里控件添加监听事件的时候这样写intent
Intent intent = getIntent();
//放数据
intent.putExtraString(key,value);
//注意
setResult(code,intent);
//关闭当前activity
finish();
其他的正常写,在监听事件的时候注意上述代码,setResult(RESULT_CODE1,intent);,还有后面的关闭当前Activity

finish(),没有这句话,则失败
这样就完成了

这次写的不在状态,因为代码不在这台电脑上,都是自己手写的!望见谅

网上有一些介绍serResult()和startActivityForResult()的调用时机,这里不讲这些,这里只是介绍简单的使用,等我什么时候遇到这个问题了,我再自习的为大家讲解!!!


你可能感兴趣的:(android,setResult)