通常当我们需要从当前activity a启动一个activity b,并希望在b finish之前返回一些数据给a,就使用startActivityForResult,onActivityResult,setResult这些函数。但是这些函数是定义在Activity里面的,普通的class里面没有这些函数。
当我希望在一个fragment里面startActivityOnResult另一个activity,并将返回的数据交给fragment所属的activity处理,我在fragment里面定义了一个回调接口,并在fragment的onActivityResult里面调用了这个回调接口以把从另一个activity获取的data作为接口参数传递给所属activity.(注:fragment类是有startActivityForResult相关函数的)。
但是关于startActivityForResult这些的另一个问题来了:比如我有一个listfragment,那我也有一个myListAdapter,这个list item中有子view可以响应单击事件,单击后启动activity another ,然后接收another的数据后更新listFragment所属的activity的数据。。。。(是不是很绕。。)
我的解决办法就是:(暂时还不知道为什么它就被解决了,先mark下先)
在myListAdapter为子view注册监听,在单击事件监听中通过构造myListAdapter时传递进来的activity对象(这是listfragment所属activity传递给listfragment,由listfragment传递给myListAdapter的)去startActivityForResult,然后“重写”onActivityResult,在这个方法中将获取的data通过自定义的回调接口传递给需要处理这些数据的activty.(listFragment所属的activity了。。。。),而不明白的地方就在于这个myListAdapter是一个继承BaseAdapter的普通class,它没有startActivityForResult这些方法,当我“重写”onActivityResult的时候,它是如何接收到返回的data的??
如何有明白的还望不吝赐教,有更好的处理这种数据传递需求的也望不吝赐教,以上有写错的也望指正~