从一个Activity返回上一个Activity

从一个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的。

原文地址:https://www.cnblogs.com/silentteen/p/6046617.html