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

时间:2016-04-15 13:19:41

标签: android android-fragments android-activity android-theme android-dialogfragment

如果我想显示带有一些自定义XML的Dialog,我可以使用DialogFragment。

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

我不应该这样做吗?有什么优点和缺点?

2 个答案:

答案 0 :(得分:3)

  

如果我想显示带有一些自定义XML的Dialog,我可以使用   DialogFragment。

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

  

但是我也可以使用Activity而不是给它一个Dialog主题,   这很方便,因为活动可以相互交谈   片段不能,这使沟通变得容易一些。

  1. 是的,您可以为活动设置相同的内容,使其显示为 一个对话框。
  2. 要进行两项活动(A& B),您必须相互沟通 使用startActivityForResult(Intent intent, int reqCode)方法 开始Activity B from Activity A。当Activity B完成你的时候 必须通过Activity A方法将结果传递给setResult(int reqCode, Intent intent)
  3. 对于活动和片段通信,我们必须使用Interface 驱动实现,与通信相比非常容易 在Activites之间。有关详细信息,请在link后结帐。
  4. 相同活动中的两个Fragment可以轻松地与每个活动进行通信 其他来自Interface。请查看以上链接了解详情。对于 Tablet UI我们必须使用片段来实现 可管理和模块化。
  5.   

    我不应该这样做吗?有什么优点和缺点?

    1. 如果你坚持使用Activity驱动的开发,那么移植它 平板电脑的代码库非常困难。
    2. 如果您使用片段     小型功能,您的代码库将是模块化的。
    3. "Fragment & Activity"之间可以双向沟通 和"Fragment & Fragment via Activity"
    4. 对于Activity BActivity A通讯Activity B会 销毁并将其结果传递给Activity A

    5. Activity.startActivityForResult()有自己的优势。就像你想通过相机捕捉图像一样,我们使用Implicit Intent来启动相机Activity,一旦它捕获图像,它就会在setResult(int reqCode, Intent intent)中传回图像的URI,从而调用活动{{调用1}}以便它可以检查图像的URI细节。

答案 1 :(得分:1)

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