【android学习笔记】Activity回传值给Fragment,startActivityForResult与setResult在Fragment与Activity中的使用

【概述】使用startActivityForResult能在activity之间进行回传值,最近有需求是在fragment中点击跳转activity选择条件再返回给fragment,发现使用getActivity().startActivityForResult(intent,1001) 并无效果,而是要换成fragment.this.startActivityForResult

【使用场景】Activity回传值给Fragment,条件搜索,条件选择等

fragment代码:

tv_text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(getActivity(), SearchActivity.class);
                imgFragment.this.startActivityForResult(intent,1001);
            }
        });

activity代码:

BtnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.putExtra("mClass",gclass);
                intent.putExtra("mClient",gClient);
                intent.putExtra("staff",staff);

                setResult(1001,intent);
                finish();
            }
        });

fragment接收activity传回参数:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==1001&&requestCode==1001){
            mClient=data.getStringExtra("mClient");
            Log.e("retu",mClient+"mclient");
            gclass=data.getStringExtra("mClass");
            staff=data.getStringExtra("staff");
            imgList.clear();
            page=1;
            initData();
        }
    }

注:与activity回传的主要差别在于startActivityForResult  前需要获取到当前fragment。

发布了44 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/gzyh_tech/article/details/82379570