java - Android显示多个对话框
问题描述
尽管它不是最好的用户体验。我想知道用不同的回调实现启动几个不同的 Activity(Dialog) 的最佳解决方案是什么。我假设启动每个对话框都需要从带有context.startactivity(dialog1)
. 除了一些标题和消息之外,每个对话框看起来完全相同,但回调ok
和cancel
按钮不同。我想将对话框回调(ok,cancel)的实现与通用对话框行为分开。如果我在从静态方法启动活动时无法传递操作怎么办,我找不到 Bundle 适合这种情况。
解决方案
怎么样,为对话框创建一个枚举。
根据枚举,您可以将所有内容的值都放在枚举本身中,也可以在代码中的适当位置打开枚举。
建议为是和否按钮创建不同的点击监听器。
在这些点击侦听器中,您可以 switch(enum) 并且对于每种情况都有特定的业务逻辑。或者创建不同的点击监听器并使用一个工厂来根据枚举分配监听器。
任何一种解决方案都取决于您要如何编码。他们都有自己的优点和缺点。
根据对话框的外观,您可以使用 AlertDialog.Builder 类。还有一个 dialogfragment 类,您可以扩展它来帮助处理对话框。
如果您想向用户显示几个对话框,您将需要某种队列,用您要显示的所有对话框填充,然后一个接一个地显示它们,恕我直言,使用不同的视图并只是替换活动中的视图所以您可以将其滑入或以某种方式对其进行动画处理。
您可以让它们看起来像卡片,然后只需更改中间的文本,这样根据当前视图的类型切换点击侦听器将很容易,您甚至可以让枚举使用 R.layout.layout_name 作为视图来提供视图枚举中的值。
我知道这很多,也许有些不清楚,请提出问题,我会尽力及时回复。
推荐阅读
- python - 如何在python中解析二进制文件
- phoenix-framework - LiveView 在控制台中不为 CID 错误抛出任何组件
- php - PHP 代码在 Wordpress 插件中不起作用
- crystal-reports - 基于公式的记录的多个副本
- php - 使用 preg_match 获取字符串中的 json 格式
- sql - WHERE NOT EXISTS 条款仅部分起作用
- scala - 如何处理火花中缺少的嵌套字段?
- javascript - 如何运行一次事件函数
- android - 如何解决CameraX闪屏问题
- tensorflow - 使用 tensorlow 保存 keras 模型时出现“TypeError:不支持的可调用”