Fragment中调用onActivityForResult处理
2015-05-18 15:05
375 查看
The activity hosting this fragment has its onActivityResult called when the camera activity returns
My fragment starts an activity for result with the intent sent for the camera to take a picture. The picture application loads fine, takes a picture, and returns. The onActivityResult however is never hit. I’ve set break points but nothing is triggered. Can a fragment have onActivityResult? I’d think so since its a provided function. Thoughts on why this isn’t being triggered?
So I figured out the problem and will post the answer for anyone else experiencing this issue. The hosting activity overrode the onActivityResult but did not make a call to super.onActivityResult for unhandled result codes. Apparently even though the fragment is the one making the startActivityForResult call, the activity gets the first shot at handling the result. This makes sense when you consider the modularity of fragments. Once I implemented super.onActivityResult for all unhandled results, the fragment got a shot at handling the result.
And also from @siqing answer
To get the result in your fragment make sure you call :
解决方法就是:
在Fragment中直接调用startActivityForResult()方法,
而不是调用 getActivity().startActivityForResult()。
stackoverflow
My fragment starts an activity for result with the intent sent for the camera to take a picture. The picture application loads fine, takes a picture, and returns. The onActivityResult however is never hit. I’ve set break points but nothing is triggered. Can a fragment have onActivityResult? I’d think so since its a provided function. Thoughts on why this isn’t being triggered?
[code]ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image); myImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, 1888); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if( requestCode == 1888 ) { Bitmap photo = (Bitmap) data.getExtras().get("data"); ((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo); } }
So I figured out the problem and will post the answer for anyone else experiencing this issue. The hosting activity overrode the onActivityResult but did not make a call to super.onActivityResult for unhandled result codes. Apparently even though the fragment is the one making the startActivityForResult call, the activity gets the first shot at handling the result. This makes sense when you consider the modularity of fragments. Once I implemented super.onActivityResult for all unhandled results, the fragment got a shot at handling the result.
And also from @siqing answer
To get the result in your fragment make sure you call :
startActivityForResult(intent,111);instead of
getActivity().startActivityForResult(intent,111);inside your fragment.
解决方法就是:
在Fragment中直接调用startActivityForResult()方法,
而不是调用 getActivity().startActivityForResult()。
stackoverflow
相关文章推荐
- Android Fragment startActivityForResult没有调用onActivityResult
- 关于fragment里面调用startActivityForResult,onActivityResult没有反应的学习
- 关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案
- Fragment与宿主Activity都调用startActivityForResult,onActivityResult不执行解决办法
- 安卓:调用startActivityForResult后,onActivityResult立刻回调
- android中,fragment onActivityResult不被调用的问题?
- 总结:调用startActivityForResult,onActivityResult无响应的问题
- 在TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题.
- 总结:调用startActivityForResult,onActivityResult无响应的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- Fragment+adapter OnActivityForResult方法被Activity拦截解决
- Fragment、Activity 的 startActivityForResult 的处理
- startActivityForResult调用后立即响应了OnActivityResult()方法,导致setResult()后无响应
- 调用startActivityForResult,onActivityResult无响应的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- 调用startActivityForResult,onActivityResult无响应的问题
- onActivityForResult()与onResume()哪个先调用?
- 调用startactivityforresult后,onactivityresult响应
- 调用startactivityforresult后,onactivityresult立刻返回RESULT_CANCELED
- 调用startActivityForResult,onActivityResult无响应的问题