欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android startActivityForResult实例详解

程序员文章站 2023-12-03 10:51:52
android startactivityforresult实例详解 startactivityforresult用于两个activity之间的数据传递,activity...

android startactivityforresult实例详解

startactivityforresult用于两个activity之间的数据传递,activity1传值给activity2,activity2再返回值给activity1。

第一步:activity1中:startactivityforresult(intent intent, int requestcode)

intent intent = new intent();
intent.setclass(activity1.this,activity2.class);
bundle bundle = new bundle();
intent.putextras(bundle);
bundle.putstring("abc", "bbb");
startactivityforresult(intent, 0);
// 跳转并要求返回值,0代表请求值(可以随便写,但一定要>=0)

第二步:activity2中:setresult(int resultcode, intent intent)回传数据时采用setresult方法,并且之后activity2中要调用finish方法。

intent intent = this.getintent();
bundle bundle = intent.getextras();
string bbb=bundle.getstring("abc");//接收a的数据

bundle.putstring("aaa", "back");//返回给a的数据
intent.putextras(bundle);
this.setresult(activity.result_ok, intent);
//1、结果码可以自定义但必须大于等于0,
//如果b子模块可能有几种不同的结果返回,
//可以用这个参数予以识别区分。还有个特殊的 result_ok 值,没有特殊情况用它就好了。
//返回码可以是esult_canceled, result_ok, or any custom values starting at result_first_user。
//如果,调用的child activity失败,这个parent activity 将会收到的返回码是result_canceled.
//2、intent为a传来的带有bundle的intent,当然也可以自己定义新的bundle的intent
this.finish();
//activity2调用finish()方法之后才能返回数据到activity1

第三步:activity1中:返回数据,重写onactivityresult(int requestcode, int resultcode, intent intent)

@override
protected void onactivityresult(int requestcode, int resultcode, intent data) {
 super.onactivityresult(requestcode, resultcode, data);
 if (requestcode == 0 && resultcode == activity.result_ok) {
  bundle bundle = data.getextras();
  gameview.backstring = bundle.getstring("aaa");
  toast.maketext(this, backstring, toast.length_short).show();
 }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!