3 回答
TA贡献1848条经验 获得超2个赞
托管活动会覆盖onActivityResult()
,但它没有调用super.onActivityResult()
未处理的结果代码。显然,即使片段是进行startActivityForResult()
调用的片段,活动也会在处理结果时获得第一个镜头。当您考虑片段的模块化时,这是有意义的。一旦我实现super.onActivityResult()
了所有未处理的结果,该片段就可以处理结果。
而且来自@siqing的回答:
要在片段中获得结果,请确保调用startActivityForResult(intent,111);
而不是getActivity().startActivityForResult(intent,111);
在片段内。
TA贡献1801条经验 获得超16个赞
我想你打过电话getActivity().startActivityForResult(intent,111);
。你应该打电话startActivityForResult(intent,111);
。
TA贡献1827条经验 获得超8个赞
选项1:
如果你是startActivityForResult()
从片段调用那么你应该调用startActivityForResult()
,而不是getActivity().startActivityForResult()
,因为它会导致片段onActivityResult()。
如果你不确定你在哪里打电话startActivityForResult()
以及你将如何调用方法。
选项2:
由于Activity得到了结果onActivityResult()
,因此您需要覆盖活动onActivityResult()
并调用super.onActivityResult()
以传播到未处理结果代码或所有数据的相应片段。
如果以上两个选项不起作用,请参考选项3,因为它肯定会起作用。
选项3:
从片段到onActivityResult函数的显式调用如下。
在父Activity类中,重写onActivityResult()方法,甚至在Fragment类中重写它,并调用以下代码。
在父类中:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.dualPane); fragment.onActivityResult(requestCode, resultCode, data);}
在子类中:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { // In fragment class callback}
添加回答
举报