【概述】使用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。