如果我想显示一个带有自定义XML的对话框,我可以使用DialogFragment。
但是,我也可以使用Activity,并给它一个Dialog主题,这很方便,因为Activity可以相互通信,而fragments不能,这使得通信变得更容易。
有没有什么好的理由让我不这样做呢?好处和坏处是什么?
发布于 2016-04-15 22:03:44
如果我想显示一个带有自定义
的对话框,我可以使用一个DialogFragment。
是的,我们可以在DialogFragment.onCreateView()的onCreateView()模板方法回调中定义布局,以定义自定义布局。
但是,我也可以使用Activity,并给它一个对话主题,这很方便,因为Activity可以相互通信,而片段不能,这使得通信变得更容易。
Activity B from Activity A的startActivityForResult(Intent intent, int reqCode)方法来相互通信。当Activity B完成时,你必须通过setResult(int reqCode, Intent intent)方法将结果传递给Activity A。Interface驱动的实现,与Activites之间的通信相比,它非常容易。请查看以下link了解详细信息。Fragment可以通过Interface轻松地相互通信。请查看以上链接以了解详细信息。对于Tablet UI,我们必须使用片段来使实现易于管理和模块化。有没有什么好的理由让我不这样做呢?好处和坏处是什么?
"Fragment & Fragment via Activity""Fragment & Activity"和fragment之间的双向通信是可能的,Activity B to Activity A通信Activity B会破坏它的结果并将其结果传递给fragment,这有它自己的优势。例如,如果您想通过相机捕获图像,那么我们可以使用Implicit Intent启动camera Activity,一旦它捕获到图像,它就会将图像的URI传递回setResult(int reqCode, Intent intent)中,从而调用activity onActivityResult(),以便它可以检查图像的URI详细信息。发布于 2016-04-15 21:53:02
DialogFragment被认为是安卓系统显示复杂对话框的方式。如果您遇到的唯一问题是与activity或来自对话框的片段进行通信--有一些简单的解决方案。其中之一--要从fragment向活动发送响应,您可以使用interface。此外,显示DialogFragment比启动新活动更快。DialogFragment的另一个优点是将数据从片段传递到活动比从活动传递到活动更容易(这需要将对象作为意图附加项)。
https://stackoverflow.com/questions/36648332
复制相似问题