在Fragment中处理startActivityForResult不响应和data 为null

来源:互联网 发布:java nio selector 编辑:程序博客网 时间:2024/05/20 14:16

做android的小伙伴们时长会遇到这种需求,就是在Fragment中打开一个Activity,并且需要处理被打开的Activity 传过来的数据,此时就需要在Fragment(假设当前Fragment 为MyFragment,要打开的Activity为MyActivity) MyFragment中调用startActivityForResult来打开MyActivity,如何正确的使用startActivityForResult和防止传过来的data 为null呢? 代码如下:
<span style="font-size:14px;"><span style="white-space: pre;"></span>Intent intent = new Intent(getActivity(),MyActivity.class);                startActivityForResult(intent,1002);</span>
注意1:一定要调用Fragment 自有的startActivityForResult 而不是其所在的Activity 的startActivityForResult ,否则在MyFragment 中的onActivityResult 就无法被回调.

注意2:在MyActiviy中的finish() 方法中调用setResult()时一定要在super.finish();之前调用,不然 在MyFragment中的onActivityResult()的data就会为null,MyActivity 中的finish()代码如下:

   @Override    public void finish() {        Intent data = new Intent();        data.putExtra("data","abcde");        setResult(1003,data);        super.finish();    }

demo 代码地址如下:

http://download.csdn.net/detail/u011622631/9450989

1 0
原创粉丝点击