AndroidstartActivityForResult实例详解

\r
Android startActivityForResult实例详解
StartActivityForResult用于两个活动之间的数据传输 。Activity1将值传递给Activity2 , Activity2将值返回给Activity1 。
【AndroidstartActivityForResult实例详解】步骤1:activity 1:StartActivityForResult(Intent Intent Int请求代码)
Intent intent = new Intent(); intent.setClass(Activity1.thisActivity2.class); Bundle bundle = new Bundle(); intent.putExtras(bundle); bundle.putString(abc bbb); startActivityForResult(intent 0); // 跳转并要求返回值 , 0代表请求值(可以随便写 , 但一定要大于=0)
第二步:在Activity2中 , 使用setResult(int result code intent intent)返回数据 , 然后在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
步骤3:活动1:返回数据并重写onactivityresult(int request code int result code 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(); } }
\r

    推荐阅读