從一個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的。