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

Android DialogFragment与以对话框为主题的活动?,android,android-fragments,android-activity,android-theme,android-dialogfragment,Android,Android Fragments,Android Activity,Android Theme,Android Dialogfragment,如果我想显示带有一些自定义XML的对话框,我可以使用DialogFragment 然而,我也可以使用一个活动来代替它,并给它一个对话主题,这很方便,因为活动可以相互对话,而片段则不能,这使得交流更加容易 我不应该这样做有什么好的理由吗?优缺点是什么?DialogFragment被认为是Android显示复杂对话框的方式。如果您遇到的唯一问题是与活动或对话框中的片段通信,那么有一些简单的解决方案。其中之一-要从片段向活动发送响应,可以使用接口。此外,显示DialogFragment比启动新活动更快

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

然而,我也可以使用一个活动来代替它,并给它一个对话主题,这很方便,因为活动可以相互对话,而片段则不能,这使得交流更加容易


我不应该这样做有什么好的理由吗?优缺点是什么?

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

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

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

但是我也可以使用活动来代替,并给它一个对话主题, 这是很方便的,因为活动可以互相交谈 片段不能,这使得通信更容易一些

  • 是的,您可以为“活动”设置相同的选项,使其看起来像 对话
  • 为了让两个活动(A和B)相互交流,您必须 使用
    startActivityForResult(Intent-Intent,int-reqCode)
    方法 从活动A开始
    活动B
    。当
    活动B
    结束时 必须通过
    setResult(int reqCode,
    意图)
    方法
  • 对于活动和片段通信,我们必须使用
    接口
    驱动实现,与通信相比非常简单 在
    活动之间
    。请查看下面的详细信息
  • 相同活动中的两个
    片段
    可以轻松地相互通信 其他通过
    接口
    。请查看以上链接了解详细信息。对于
    tabletui
    我们必须使用片段来实现 易于管理和模块化
  • 我不应该这样做有什么好的理由吗?利与弊是什么

  • 如果您坚持活动驱动的开发,那么移植同样的功能 从代码库到平板电脑是非常困难的
  • 如果您使用片段 小功能您的代码库将是模块化的
  • “片段与活动”
    “通过活动的片段和片段”
  • 对于
    活动B
    活动A
    通信
    活动B
    将 销毁并将其结果传递给
    活动A

  • Activity.startActivityForResult()
    有自己的优势。例如,如果您想通过摄像头捕获图像,那么我们使用
    隐式意图
    启动摄像头
    活动
    ,一旦捕获图像,它将图像的URI传递回
    setResult(int-reqCode,Intent-Intent)
    ,从而调用Activity
    onActivityResult()
    被调用,以便它可以检查图像的URI详细信息


  • 同一活动上的两个片段可以通过接口轻松地相互通信。
    它们可以通过底层活动相互通信,但是如果你从Activity->Fragment->Fragment开始,这会变得很混乱,因为现在你必须从片段中删除实现细节,并将它们放到Activity中,导致大量的内容膨胀code@Kalima:您正在谈论案例活动->片段->片段,在这种情况下,第二个片段必须是嵌套片段,表示片段1的子片段。您不需要直接从活动与第二个片段通信。您应该将事件传递给片段1,然后片段1将事件传递给片段2。请查看以下链接了解详细信息。