onActivityResult不在Fragment中调用
托管此片段的活动在摄影机活动返回时调用onActivityResult
。
我的片段开始一个活动的结果与意图发送给相机拍照。 图片应用程序加载正常,拍照并返回。 然而, onActivityResult
从未被击中。 我设置了断点,但没有任何事件被触发。 片段是否有onActivityResult
? 我会这么认为,因为这是一个提供的功能。 为什么没有被触发?
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);
}
}
托管活动覆盖onActivityResult()
,但未针对未处理的结果代码调用super.onActivityResult()
。 显然,即使片段是进行startActivityForResult()
调用的片段,该活动也会在处理结果时获得第一个镜头。 当你考虑碎片的模块性时,这是有道理的。 一旦我为所有未处理的结果实现了super.onActivityResult()
,该片段在处理结果时得到了一个镜头。
还从@siqing回答:
为了在你的片段中得到结果,确保你调用startActivityForResult(intent,111);
而不是getActivity().startActivityForResult(intent,111);
在你的片段内。
我想你叫getActivity().startActivityForResult(intent,111);
。 你应该调用startActivityForResult(intent,111);
。
选项1:
如果你调用startActivityForResult()
从片段,那么你应该调用startActivityForResult()
而不是getActivity().startActivityForResult()
因为它会导致片段onActivityResult()。
如果你不确定你在哪里调用startActivityForResult()
以及你将如何调用方法。
选项2:
由于Activity获得onActivityResult()
的结果,因此您需要重写活动的onActivityResult()
并调用super.onActivityResult()
传播到相应的片段,以获取未处理的结果代码或所有片段。
如果上述两个选项不起作用,则参考选项3,因为它一定会起作用。
选项3:
从片段到onActivityResult函数的显式调用如下所示。
在父Activity类中,重写onActivityResult()方法,甚至覆盖Fragment类中的相同内容,并调用以下代码。
在父类中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.dualPane);
fragment.onActivityResult(requestCode, resultCode, data);
}
在孩子班级:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// In fragment class callback
}
链接地址: http://www.djcxy.com/p/23141.html
上一篇: onActivityResult is not being called in Fragment
下一篇: I need some clarifications of fragments vs activities and views