首页 > 代码库 > startActivityForResult用法
startActivityForResult用法
使用场景:A界面(activity) 可跳转到一个(假设为 B)或多个子Activity,要求B处理完工作之后返回A 界面,或许同时返回一些数据交给A继续处理。如 由登陆界面A跳转到注册界面B,注册成功后由注册界面返回到登陆界面A,同时将新注册的账号带到登陆界面A,并将其填充到用户账号输入框,方便用户登陆。
//主界面中启动子模块
startActivityForResult(Intent intent, Int requestCode)
//主界面A中接收返回数据
onActivityResult(int requestCode, int resultCode, Intent intent)
//子模块中设置返回数据
setResut(int resultCode, Intent intent)
例子:
启动子模块
Intent intent=new Intent();intent.setClass(A.this, B.class);Bundle bundle=new Bundle();bundle.putString("data", "data");intent.putExtras(bundle);startActivityForResult(intent, 0);//requestCode一定要>=0,接收返回数据时用requestCode区分到底是哪个子模块返回的数据
重写onActivityResult,用来接收子模块返回的数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (resultCode) { //resultCode标记完成装态 case RESULT_OK: if(requestCode==0){//根据requestCode区分是哪个子模块返回的数据然后进行相应的业务处理 Bundle b=data.getExtras(); //data为B中回传的Intent String str=b.getString("data");//str即为回传的值,A界面可以进一步处理} break;default: break; }}
在子模块如B中回传数据使用setResut,之后调用finish()
setResult(RESULT_OK, intent); finish();//此处一定要调用finish()方法
startActivityForResult用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。