Android嵌套片段onActivityResult问题

时间:2014-10-26 11:43:05

标签: android fragment

我一直在阅读关于嵌套片段onActivityResult问题的很多内容。

我得到了下一个结论。

1)在片段中,应该调用 this.startActivityForResult()而不是this.getActivity.startActivityForResult()

2)在父调用super.onActivityResult()的Activity上覆盖onActivityResult(),以通过片段传播响应。

直到这里,在Fragments中配置onActivityResult的常规方法。

但我使用嵌套片段的一个实现。然后我应该做更多的步骤。

3)在这里,我们可以看到完整的过程。

enter image description here

首先,我的所有片段都处于根级别,不存在其他片段级别。

然后,为了尝试解决问题,我在主Activity中扩展了此修复活动。

CommonActivity

在这里,只有一个区别,我已经被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(..)永远不会被调用。

为什么?,问题出在哪里?

1 个答案:

答案 0 :(得分:0)

当调用startActivityForResult时,结果总是从调用的地方调用相同的Activity,或者调用Fragment附加到的Activity(你的情况),这样你就可以尝试覆盖onAttach(Activity activity) - Fragment的功能,并查看哪个片段附有活动。 或者将startActivityForResult作为CommonActivity的公共函数调用的其他方式,因此结果总是会转到CommonActivity.onActivityResult。祝你好运!