startActivityForResult用法_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > startActivityForResult用法

startActivityForResult用法

 2015/1/12 11:47:42  缘聚潇湘  程序员俱乐部  我要评论(0)
  • 摘要:使用场景:A界面(activity)可跳转到一个(假设为B)或多个子Activity,要求B处理完工作之后返回A界面,或许同时返回一些数据交给A继续处理。如由登陆界面A跳转到注册界面B,注册成功后由注册界面返回到登陆界面A,同时将新注册的账号带到登陆界面A,并将其填充到用户账号输入框,方便用户登陆。//主界面中启动子模块startActivityForResult(Intentintent,IntrequestCode)//主界面A中接收返回数据onActivityResult
  • 标签:用法 for Activity

使用场景: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()方法

 

上一篇: CocoaAsyncSocketDemo 下一篇: 没有下一篇了!
发表评论
用户名: 匿名