从单独的 Dialog 类获取 Dialog onclicklistener 到我的 Activity

2024-02-13

我有一个对话框类,我在其中保存了对话框。现在的问题是我想将对话框的“视图”单击侦听器返回到我的活动中。我知道这可以通过编写接口来完成,但是还有其他 OOP 方法吗?

我的对话类:

public class Dialogs{
 public void testCompletionDialog() {

        final Dialog dialog = new Dialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(true);
        dialog.setContentView(R.layout.test_complete_dialog);
        dialog.setTitle("Ratta provet?");



        dialog.findViewById(R.id.lesson_btn_marker).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

//I want my activity to know that this view is clicked.
                 dialog.dismiss();


            }
        });

        dialog.findViewById(R.id.lesson_btn_ratta).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //I want my activity to know that this view is clicked.


            }
        });

        dialog.show();


    }
}

我的活动:

if (areQueOver) {

                    Dialogs dialogs=new Dialogs(TestActivity.this);
                    dialogs.testCompletionDialog();
                }

您可以使用它EventBus https://github.com/greenrobot/EventBus

在 Dialog 类的 onClick 中发布一个事件,告知对话框已被单击。该事件可能包含一个字符串变量,告诉您单击了哪个对话框。

在您的 Activity 中订阅并处理事件。您可以检查字符串变量值以了解单击了哪个对话框。

修改您的 Dialogs 类,如下所示:

public class Dialogs{
 public void testCompletionDialog() {

        final Dialog dialog = new Dialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(true);
        dialog.setContentView(R.layout.test_complete_dialog);
        dialog.setTitle("Ratta provet?");

        dialog.findViewById(R.id.lesson_btn_marker).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 EventBus.getDefault().post("btn_marker");
                 dialog.dismiss();
            }
        });

        dialog.findViewById(R.id.lesson_btn_ratta).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post("btn_ratta");
            }
        });

        dialog.show();

在您的活动中:

@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(String action){
        if(action.equals("btn_ratta")){

        } else if(action.equals("btn_marker")) {

        }
    }

在 onCreate 里面添加这个-

EventBus.getDefault().register(this);

在 onDestroy 里面添加这个 -

EventBus.getDefault().unregister(this);

替代方法:

好吧,除了接口和 EventBus 之外,您还可以向 Activity 添加一个公共方法,例如:

onDialogClicked(String dialogName){//TODO handle the click as per dialogName} 

然后从 Dialogs 类中的 onClick 调用此方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从单独的 Dialog 类获取 Dialog onclicklistener 到我的 Activity 的相关文章

  • 如何使用应用程序接口将蓝牙套接字传递给另一个活动

    因此 根据我收集的信息 套接字连接既不可序列化 也不可分割 但我需要将蓝牙连接传递给另一个活动 我不想作为中间人编写服务 所以请不要将此作为解决方案发布 我听说有一种方法可以使用自定义应用程序接口来传递这些类型的对象 但我一生都找不到这样的
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • android textview 有字符限制吗?

    我正在尝试在 android TextView 中输入超过 2000 3000 个字符 它不显示任何内容 任何一份指南是否对 android textview 有字符限制或什么 我在G3中做了一些小测试 我发现 如果activtiy布局中有
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 发生错误。请参阅日志文件 - eclipse juno

    每当我启动 Eclipse Juno 时 都会出现错误 发生错误 请查看日志文件 C Program Files eclipse configuration 1362989254411 log 有的网站说卸载jdk重新安装 我这样做了 但没
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • 带有 OpenId 提供程序的 Java Spring 安全性

    我有一个 spring MVC 应用程序 另一个客户端应用程序想要使用 open id connect 访问我的 spring 应用程序 如何在服务器端实现开放ID提供商 请帮忙 MITREid 连接 OpenID Connect Java
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • JavaFX - 为什么多次将节点添加到窗格或不同的窗格会导致错误?

    我现在正在学习基本的 JavaFX 我不明白我正在阅读的书中的这一说法 不 诸如文本字段之类的节点只能添加到一个窗格中一次 将节点添加到多次窗格或不同的窗格将导致运行时错误 我可以从书中提供的UML图看出它是一个组合 但我不明白为什么 库类
  • 在 Nougat 7.1.1 中点击应用程序快捷方式时出现应用程序未安装错误

    我在向现有应用程序添加静态应用程序快捷方式时遇到一些问题 我按照以下步骤操作https developer android com guide topics ui shortcuts html https developer android
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 如何在Android中创建一个简洁的两栏输入表单?

    我想创建一个整洁的两列输入表单 如下所示 到目前为止我的 xml 布局代码
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 在 Android 手机中通过耳机插孔发送数据

    我目前正在处理一个新项目 我必须通过具有特定电压的耳机插孔发送数据 然后我可以在该电压上工作 所以这里我需要根据我的数据来编程具体电压 我是否可以在android中访问耳机的输出电压 然后创建一个应用程序来控制该电压 这是一篇讨论此问题的
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N

随机推荐

  • 以 Django 作为后端的 Android/iOS 应用程序

    我有一个用 Django 构建的网站项目 想为其构建一个移动应用程序 我做了很多研究 但很困惑native and hybrid应用程序 我的项目基本上是 Quora 的克隆 只是一个大学项目 我也看到了PhoneGap Ionic and
  • UIAlertAction 值列表

    我试图弄清楚如何更改 UIAlertAction 标题的字体类型 我假设 可以通过为特定键设置值来完成 例如 要设置图像 您可以这样做 action setValue image forKey image 是否有所有可用密钥的列表 我不知道
  • 有没有比 () => 更好的方式来表达无参数 lambda?

    The 看起来很傻 有没有更好的办法 例如 ExternalId IfNotNullDo gt ExternalId ExternalId Trim 有点 城里有一个新的习语 它很好 在某些情况下可能对你有帮助 这并不完全是你想要的 但有时
  • 模拟器 Nexus 7 使用布局文件夹而不是layout-sw600dp

    我正在尝试处理不同屏幕的布局 但我发现这很困难 因为模拟器总是使用默认布局 我不明白为什么 我创建了一个 Nexus 7 模拟器 并希望使用layout sw600dp 与 Nexus 10 模拟器相同 怎么来的 提前致谢 R Nexus
  • 如何从PostgreSQL数据库获取角色的评论

    给定角色名称someone 如何获取用子句定义的注释 COMMENT ON ROLE someone IS THIS IS A ROLE COMMENT 查找如何检索此类信息的一个好方法是查看帮助psql并找到将显示此信息的命令 在这种情况
  • 有没有办法在 SymPy 中处理常量函数参数?

    我正在生成符号函数并使用 SymPy 来简化它们 现在我想要一种方法来 简化 表示尚未拟合的函数中的常量参数的符号 例如 如果我生成一个多项式 我可能会生成一个像这样的字符串 C x x C x C x C SymPy 会变成 C x 2
  • Laravel 5.5 如何在关系中添加动态条件?

    我有一个关系 可以让在特定日期创建的朋友使用静态日期参数 public function friends return this gt hasMany Friend class gt where created at 2018 01 31
  • printf 中的可变大小填充

    有没有办法在中使用可变大小的填充printf 我有一个整数表示填充有多大 void foo int paddingSize printf MyText paddingSize 这应该打印出来 MyText其中 paddingSize 应决定
  • 使用日期时间索引提高大熊猫 read_csv 的速度

    我有巨大的文件 如下所示 05 31 2012 15 30 00 029 130 6 25 1 E 0 1306 25 05 31 2012 15 30 00 029 130 6 25 8 E 0 1306 25 我可以使用以下内容轻松阅读
  • 我可以将 NativeActivity 与 ActivityGroup 一起使用吗?

    I know ActivityGroup已弃用 但我正在尝试结合用户界面NativeActivty带有一些 Java Android APIViews 我正在尝试制作一个混合用户界面 其中屏幕的一部分来自NativeActivity 我用这
  • Python 中变量参数列表的默认值

    是否可以在 Python 3 中为变量参数列表设置默认值 就像是 def do it args 2 5 21 pass 我想知道变量参数列表的类型tuple但这里不接受任何元组 如果语法上没有 那么取决于你想要什么行为 def do it
  • 使用 TryGetProperty 时忽略大小写

    我有一个 JsonElement 类型的对象 其中包含 API 返回的数据 我想获取某个属性的值 但问题是 TryGetProperty 区分大小写 有没有办法或解决方法可以按名称获取属性 同时忽略大小写 谢谢 EnumerateObjec
  • Django - 如何使用 URL 中定义的外键创建 POST?

    我想知道如何创建具有定义 ID 的对象 POST 假设我有一个实例表User有柱子id name和桌子Object有柱子id id users sth where id users是一个外键id from User桌子 我想要一个这样的网址
  • 如何更改iOS模拟器保存截图的目录?

    从 iOS 模拟器保存屏幕截图时 屏幕截图会保存到桌面 拍了一些之后 我的桌面很快就被不属于那里的屏幕截图污染了 如何更改iOS模拟器截图的保存目录 在一些与屏幕截图存储位置相关的问题中 评论者回应说 默认情况下 它们存储在桌面上 暗示它可
  • Robolectric:运行多个测试失败

    我正在尝试运行多个测试Robolectric 3 0 Gradle using SQLite 开放助手 作为数据库 运行每个单独的测试都可以正常工作 但启动整个测试套件总是会导致第二个测试中出现 RuntimeException 这是我的测
  • Pandas - 根据索引替换值

    如果我创建一个像这样的数据框 import pandas as pd numpy as np df pd DataFrame np random randint 0 100 size 100 2 columns list AB 例如 如何将
  • NHibernate SchemaExport 无法删除表....有时

    我使用 NHibernate 作为我的应用程序的 DAL 特别是 NHibernate 的 SchemaExport 函数在执行单元测试之前删除 重新创建我的数据库模式 我遇到的问题是 当我运行单元测试并执行 SchemaExport 时
  • 具有重复参数的 PostgreSQL 函数

    我偶然发现了一个奇怪的函数签名pg catalog pg stat get activity CREATE OR REPLACE FUNCTION pg stat get activity IN pid integer OUT datid
  • Firestore集合监听器大量读取

    我正在我的一个应用程序中实现 Firestore 数据存储 我有一个监听器 它跟踪 logs 集合中的更新 如下所示 db collection logs addSnapshotListener snapshot error in guar
  • 从单独的 Dialog 类获取 Dialog onclicklistener 到我的 Activity

    我有一个对话框类 我在其中保存了对话框 现在的问题是我想将对话框的 视图 单击侦听器返回到我的活动中 我知道这可以通过编写接口来完成 但是还有其他 OOP 方法吗 我的对话类 public class Dialogs public void