从一个Activity返回上一个Activity
要求:保留上一个Activity的数据
方法:
第一步:从Activity1转向Activity2时,用startActivityForResult而不是startActivity;
example:
/*Activity1中*/
Intent intent = new Intent(this,Activity2.class);
intent.putExtra("path", path);
startActivityForResult(intent,3);
第二步:需要Activity1时,将调用Activity2的finish()方法结束Activity2,同时传递的数据与result_code均可通过setResult设置。注:setResult实在finish()时调用,故setResult必须放在finish()之前。
example:
/*Activity2中*/
Intent intent = new Intent();
//将想要传递的数据用putExtra封装在intent中
intent.putExtra(key,value)
setResult(RESULT_CANCELED,intent);
finish();
注意:Activity2中切不可用startActivity转到Activity1。
Intent intent = new Intent(Activity1.class);
//将想要传递的数据用putExtra封装在intent中
intent.putExtra(key,value)
startActivity(intent);
原因:利用上述startActivity转到Activity1时会重新建立Activity1界面(对象),即是一个新的Activity1,之前Activity1的数据将全部消失。
第三步:Activity1接受Activity2的数据
方法:利用onActivityResult中的参数data,data就是上一个Activity返回的Intent数据(即第二步中,setResult中的intent)。不要再用getIntent()函数,那样是获取不到传回的intent的。