使用startActivityForResult,区别于startActivity

自己查过很多次,但是总结起来自己终于清晰了,主要分三点。

1.A跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent, 0); 


2.重写onActivityResult方法,用来接收B回传的数据;


3.在B中回传数据时采用setResult方法,并且之后要调用finish方法。
如果在startActivityForResult起来的Activity里面设置setResult,结果并不会马上返回给parent的Activity,只有当前Activity被finish,结果才会被发送给parent的onActivityResult去处理!
按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .
解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……

猜你喜欢

转载自blog.csdn.net/Doheo/article/details/47833419