我有一些片段需要显示常规对话框.在这些对话框中,用户可以 Select 是/否答案,然后片段应该会相应地运行.

现在,Fragment类没有要重写的onCreateDialog()方法,所以我想我必须在包含Activity的外部实现对话框.没关系,但是Activity需要以某种方式向片段报告 Select 的答案.我当然可以在这里使用回调模式,因此片段在Activity处注册为一个侦听器类,活动将通过该类或类似的方式报告答案.

但是对于像在片段中显示"简单的"是-否对话框这样的简单任务来说,这似乎是一个相当大的混乱.而且,这样我的Fragment美元就不那么自给自足了.

有没有更干净的方法?

Edit:

这个问题的答案并没有真正详细地解释应该如何使用DialogFragments来显示来自片段的对话框.所以AFAIK,我们要做的是:

  1. 显示片段.
  2. 需要时,实例化DialogFragment.
  3. 将原始片段设置为此DialogFragment的目标,值为.setTargetFragment().
  4. 使用显示对话框片段.show()来自原始片段.
  5. 当用户在此对话框片段上 Select 某个选项时,将此 Select 通知原始片段(例如,用户单击"是"),您可以使用获取原始片段的引用.getTarget().
  6. 关闭DialogFragment.

推荐答案

你应该用DialogFragment代替.

Android相关问答推荐

使用mvvm和jetpack的Android中的视图模型compose

显示本地房间数据库中未保存的项目的动态列表

如何在Jetpack导航中不显示目的地?

使用RecycleView和Diffutils时从列表中删除项目时出现问题

Android手柄注射周期错误,多个模块引用一个核心模块

Kotlin为多个控件设置一个侦听器

如何共享没有';t是否存在?(仅信息)在Android?

为什么 Android Compose 将片段作为参数传递给 Composables 函数?

如何使用其他组件的位置来定位自定义弹出窗口

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

Kotlin - 在继续之前如何等待这个协程完成?

Color.Transparent 和 Color.Unspecified 之间的区别

任务:app:kaptGenerateStubsDebugKotlin执行失败. > 'compileDebugJavaWithJavac' 任务(当前目标是 1.8)

如何在 Android Studio 中为带有 Room 的 SQLite 编写需要参数的查询?

延时kotlin中时分秒的使用方法

了解 Compose 声明性逻辑

在compose中,为什么修改List元素的属性,LazyColumn不刷新

如何限制键盘输入键不允许在下一行输入(Android Jetpack Compose 中的 TextField)

我不能在 jetpack Compose 中使用 TextField()(material 3)

Android WebView 没有在第一次页面完成时从本地存储读取数据?