Android startActivityForResult实例详解
程序员文章站
2023-11-17 08:36:34
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(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 不懂SEO如何做营销?