Android 应在何处处理onActivityResult、对话框片段、片段或活动?

Android 应在何处处理onActivityResult、对话框片段、片段或活动?,android,fragment,android-camera-intent,dialogfragment,onactivityresult,Android,Fragment,Android Camera Intent,Dialogfragment,Onactivityresult,在我的android应用程序中,我有一个片段,用户可以在其中添加图片,无论是从图库还是从相机。我创建了一个警报对话框,并将其放置在DialogFragment中。当用户选择一个选项时,我调用startActivityForResult。我的问题是,理想情况下,这个结果应该在哪里处理?(即,我应该将onActivityResult放在何处?)在DialogFragment类、主机片段或主机活动中?这有关系吗?您必须在HostActivity.Java中编写onActivityResult(),如下

在我的android应用程序中,我有一个片段,用户可以在其中添加图片,无论是从图库还是从相机。我创建了一个警报对话框,并将其放置在DialogFragment中。当用户选择一个选项时,我调用startActivityForResult。我的问题是,理想情况下,这个结果应该在哪里处理?(即,我应该将onActivityResult放在何处?)在DialogFragment类、主机片段或主机活动中?这有关系吗?

您必须在
HostActivity.Java
中编写
onActivityResult()
,如下所示:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  //do something
}

您必须在
HostActivity.Java
中编写
onActivityResult()
,如下所示:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  //do something
}

是的,这很重要;接收结果的是活动,根据该结果,您决定进一步采取什么行动,通知您的片段或您需要的任何内容。

是的,这很重要;它是接收结果的活动,根据该结果,您可以决定进一步执行哪些操作,通知您的片段或您需要的任何内容。

onActivityResult()
将首先在该活动上调用。之后,如果您在活动中调用
super.onActivityResult()
,它将到达片段

这是因为片段的模块化设计。如果出现结果,活动将处理该结果,并且可以将未处理的结果(如果有)传递给片段

回答您的问题:决定处理应用程序设计/代码方面的结果的意义。如果您在片段中处理它,并通过回调f.e将结果发送回“活动”,则可以直接在“活动”中处理它。

onActivityResult()
将首先在“活动”上调用。之后,如果您在活动中调用
super.onActivityResult()
,它将到达片段

这是因为片段的模块化设计。如果出现结果,活动将处理该结果,并且可以将未处理的结果(如果有)传递给片段

回答您的问题:决定处理应用程序设计/代码方面的结果的意义。如果在片段中处理它并通过回调f.e将结果发送回活动,则可以直接在活动中处理它。

我在托管DialogFragments的活动中使用ActivityForResult()。我在托管DialogFragments的活动中使用ActivityForResult()。