今天进一步理解了startActivityForResult(Intent intent, int requestCode);onActivityResult(int requestCode, int resultCode, Intent data);和setResult(int resultCode, Intent data);主要2点,怎么用和调用谁的。
1.一个activity调用startActivityForResult ,进入一个新的activity界面,然后新的activity销毁了,原activity的onActivityResult被调用,其中requestCode为开始调用startActivityForResult设置的requestCode,第二个和第三个参数为新activity在调用finish方法之前调用setResult方法设置的(注意此处一定要在finish之前setResult)。
2.fragment和activity到底谁调用onActivityResult方法:这个要看是谁的context启动的startActivityForResult方法,举例说假如是fragment想让父亲activity的onActivityResult被调用可以使用this.getActivity().startActivityForResult(Intent intent, int requestCode);
有时候跨activity传递数据还是有点麻烦,比如abc3个页面,a到b到c,c启动b就销毁,c销毁,a并不会调用onActivityResult,所有有时候还是写dialog吧,典型的场合是activity 和dialog同时显示 要先dialog.dismiss() 后activity.finish() 如果直接finish() 会出错 但不影响功能。还有就是使用Activity加Fragment的模式,推荐使用Fragmentation。