Fragment中调用startActivityForResult()返回值,出现了各种问题,终于成功,记录如下:
一、Fragment中的调用方法,Intent中context参数为getActivity(), 注意startActivityForResult()的前面为空
<span style="font-size:18px;"> <span style="font-size:14px;">Intent intent = new Intent(getActivity(), TenderActivity.class);
startActivityForResult(intent, 1000);</span></span>
二、被调用的Activity的结束方法
<span style="font-size:18px;"> @Override
public void onBackPressed() {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}</span>
三、Fragment中重写onActivityResult(),注意super
<span style="font-size:18px;"> @Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data); //这个super可不能落下,否则可能回调不了
switch(requestCode){
case 1000:
if(resultCode == getActivity().RESULT_OK){
Logg.d("TAG", "收到返回值了收到了了子了了了了了了子了了了了了了了");
}
break;
case 1:
if(resultCode == getActivity().RESULT_OK){
Logg.d("TAG", "收到返回值了收到了了子了了了了了了子了了了了了了了");
}
break;
}
}</span>
四、 注意fragment的父activity中是否重写了onActivityResult方法,回调是要先经过父activity中的onActivityResult方法的,不要被它吃掉