我一直在阅读关于嵌套片段onActivityResult问题的很多内容。
我得到了下一个结论。
1)在片段中,应该调用 this.startActivityForResult()而不是this.getActivity.startActivityForResult()
2)在父调用super.onActivityResult()的Activity上覆盖onActivityResult(),以通过片段传播响应。
直到这里,在Fragments中配置onActivityResult的常规方法。
但我使用嵌套片段的一个实现。然后我应该做更多的步骤。
3)在这里,我们可以看到完整的过程。
首先,我的所有片段都处于根级别,不存在其他片段级别。
然后,为了尝试解决问题,我在主Activity中扩展了此修复活动。
在这里,只有一个区别,我已经被FragmentActivity取代了ActionBarActivity。
4)最后,在结果ListActivity中,我有下一个测试代码。
Intent output = new Intent();
output.putExtra("pos", position);
this.setResult(Activity.RESULT_OK, output);
this.finish();
问题,debbuging,我可以看到当从Fragment调用this.startActivityForResult()时,CommonActivity.startActivityFromFragment(..)正在工作。但是,当响应从结果中抛出ListActivity时,CommonActivity.onActivityResult(..)永远不会被调用。
为什么?,问题出在哪里?
答案 0 :(得分:0)
当调用startActivityForResult时,结果总是从调用的地方调用相同的Activity,或者调用Fragment附加到的Activity(你的情况),这样你就可以尝试覆盖onAttach(Activity activity) - Fragment的功能,并查看哪个片段附有活动。 或者将startActivityForResult作为CommonActivity的公共函数调用的其他方式,因此结果总是会转到CommonActivity.onActivityResult。祝你好运!