首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialogFragment与以对话为主题的活动?

DialogFragment与以对话为主题的活动?
EN

Stack Overflow用户
提问于 2016-04-15 21:19:41
回答 2查看 2.3K关注 0票数 4

如果我想显示一个带有自定义XML的对话框,我可以使用DialogFragment。

但是,我也可以使用Activity,并给它一个Dialog主题,这很方便,因为Activity可以相互通信,而fragments不能,这使得通信变得更容易。

有没有什么好的理由让我不这样做呢?好处和坏处是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-04-15 22:03:44

如果我想显示一个带有自定义

的对话框,我可以使用一个DialogFragment。

是的,我们可以在DialogFragment.onCreateView()的onCreateView()模板方法回调中定义布局,以定义自定义布局。

但是,我也可以使用Activity,并给它一个对话主题,这很方便,因为Activity可以相互通信,而片段不能,这使得通信变得更容易。

  1. 是的,您可以为activity设置相同的设置,使其看起来像一个对话框。
  2. 对于两个activity(A和B),您必须使用启动Activity B from Activity AstartActivityForResult(Intent intent, int reqCode)方法来相互通信。当Activity B完成时,你必须通过setResult(int reqCode, Intent intent)方法将结果传递给Activity A
  3. 对于活动和片段通信,我们必须使用Interface驱动的实现,与Activites之间的通信相比,它非常容易。请查看以下link了解详细信息。
  4. 同一活动上的两个Fragment可以通过Interface轻松地相互通信。请查看以上链接以了解详细信息。对于Tablet UI,我们必须使用片段来使实现易于管理和模块化。

有没有什么好的理由让我不这样做呢?好处和坏处是什么?

  1. 如果你坚持活动驱动的开发,那么将相同的代码库移植到平板电脑上是非常困难的。如果你使用"Fragment & Fragment via Activity"
  2. For实现小到小的功能,你的代码库将是模块化的。
  3. "Fragment & Activity"和fragment之间的双向通信是可能的,Activity B to Activity A通信Activity B会破坏它的结果并将其结果传递给fragment,这有它自己的优势。例如,如果您想通过相机捕获图像,那么我们可以使用Implicit Intent启动camera Activity,一旦它捕获到图像,它就会将图像的URI传递回setResult(int reqCode, Intent intent)中,从而调用activity onActivityResult(),以便它可以检查图像的URI详细信息。
票数 3
EN

Stack Overflow用户

发布于 2016-04-15 21:53:02

DialogFragment被认为是安卓系统显示复杂对话框的方式。如果您遇到的唯一问题是与activity或来自对话框的片段进行通信--有一些简单的解决方案。其中之一--要从fragment向活动发送响应,您可以使用interface。此外,显示DialogFragment比启动新活动更快。DialogFragment的另一个优点是将数据从片段传递到活动比从活动传递到活动更容易(这需要将对象作为意图附加项)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36648332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档