本文出处:http://superonion.iteye.com/blog/1418467

我们知道,从一个Activity向另一个Activity传递数据,用Intent实现。而当一个浮在Activity之上的Dialog需要向该Activity传递数据时,应该怎么实现呢?接着上一篇文章:用Dialog创建带箭头的对话框。 
       现在PopupDialog中声明一个内部接口PriorityListener,接口中声明一个回调函数refreshPriorityUI,用于在Dialog的监听事件触发后刷新Activity的UI显示。然后在MainActivity中的Button点击事件中实现这个接口并将其作为PopupDialog的构造函数的参数传入,并实现refreshPriorityUI()方法。话不多说,直接上代码—— 
     PopupDialog代码:

Java代码  
  1. public class PopupDialog extends Dialog {
  2. /**
  3. * 自定义Dialog监听器
  4. */
  5. public interface PriorityListener {
  6. /**
  7. * 回调函数,用于在Dialog的监听事件触发后刷新Activity的UI显示
  8. */
  9. public void refreshPriorityUI(String string);
  10. }
  11. private PriorityListener listener;
  12. /**
  13. * 带监听器参数的构造函数
  14. */
  15. public PopupDialog(Context context, int theme, PriorityListener listener) {
  16. super(context, theme);
  17. this.listener = listener;
  18. }
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.popup_dialog);
  22. Button buttonUp = (Button) findViewById(R.id.btn_up);
  23. buttonUp.setOnClickListener(new Button.OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. dismiss();
  27. listener.refreshPriorityUI("数据来自:上");
  28. }
  29. });
  30. }
  31. }

MainActivity代码:

Java代码  
  1. public class MainActivity extends Activity {
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. Button button = (Button)findViewById(R.id.btn);
  7. button.setOnClickListener(new OnClickListener() {
  8. @Override
  9. public void onClick(View v) {
  10. PopupDialog popupDialog = new PopupDialog(MainActivity.this, R.style.dialog, new PopupDialog.PriorityListener() {
  11. @Override
  12. public void refreshPriorityUI(String string) {
  13. Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
  14. }
  15. });
  16. popupDialog.setCanceledOnTouchOutside(true); // 点击Dialog之外的区域对话框消失
  17. Window window = popupDialog.getWindow();
  18. WindowManager.LayoutParams lp = window.getAttributes();
  19. lp.y = -64; // 设置竖直方向的偏移量
  20. lp.dimAmount = 0f; // 弹出对话框的时候背景不变暗
  21. popupDialog.show();
  22. }
  23. });
  24. }
  25. }

最后效果:

点击“上”之后,MainActivity会调用refreshPriorityUI()方法:

转载于:https://www.cnblogs.com/a446276468/p/5310285.html

Dialog向Activity传递数据相关推荐

  1. Fragment与Activity传递数据

    MainActivity如下: package cc.testsimplefragment0;import android.os.Bundle; import android.app.Activity ...

  2. Activity传递数据四种方法

    方法一.全局对象 android的全局对象类似于java web中的applican域.除非是android应用程序清除内存,否则全局对象将一直可以访问 使用: public class MyApp ...

  3. java向另一activity输入_Activity经典实例一:两个Activity传递数据和对象

    1.概述: Activity类直接或者间接地继承了Context.ContextWrapper.ContextThemeWrapper等基类,因此Activity可以直接调用它们的方法. 创建一个Ac ...

  4. Activity Fragment数据传递(对象)引用不变问题

    一.背景 一天写代码出了bug,Activity传给fragment的arraylist经过fragment中的修改居然会改变activity的arrayList(之前传给fragment的那个),当 ...

  5. Activity查看数据与文本框反回数据

    1.Activity传递数据,并显示Activity上. 2.Android用Intent来做activity的跳转,轻量级的数据用Bundle 配合着传递. 传回数据用startActivityFo ...

  6. Android -- 启动Service并传递数据

    本文主要记录Activity传递数据到Service. 1.效果图 2.通过以上效果图,可以看出activity页面的数值改变,相应后台service输出的数值也跟着改变. 3.核心代码如下,看代码中 ...

  7. Fragment传递数据

    文章目录 Fragment与Activity之间 Activity向Fragment传递数据 通过构造方法的参数传递 代码示例 Fragment对外提供设置数据的方法,也就是public类型的方法 代 ...

  8. android 不同activity之间传递数据

    1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...

  9. 使用 Bundle在Activity间传递数据

    使用    Intent 启动另一个 Activity Intent  showNextPage_Intent=new  new  new  new  Intent(); showNextPage_I ...

最新文章

  1. 机房收费--一般用户
  2. 去java文件 注释_去除java文件中注释部分
  3. sql更新表的字段和主键
  4. ★36句经典英文格言
  5. 基于JRTPLIB库的RTP数据传输设计文档(1)
  6. 面试精讲之面试考点及大厂真题 - 分布式专栏 06 详细说下CAP分别代表什么含义吗
  7. LeetCode-70 爬楼梯
  8. 转: MySql数据引擎简介与选择方法
  9. 游戏需求,猎豹启发!揭秘华为Mate 20 X石墨烯膜散热方案出台始末
  10. python数据可视化基础
  11. 通过UltraISO,写入ISO镜像,制作U盘启动盘
  12. 数学建模2-美国人口增长模型的确定
  13. PVE 7.2 ikuai + openwrt + DSM6.2.3 + 网心云 重装备用
  14. 2017 百度之星 复赛 Valley Numer(数位dp)
  15. 几种宽带无线接入技术的比较
  16. Raspbian 教学系统安装、配置流程
  17. 1d在c语言中,佳能1D X和1D C的区别只是固件?
  18. Junit单元测试工具
  19. 推荐下载 deb 软件包的好地方
  20. python-excel 之带有格式及合并单元格样式的表格复制

热门文章

  1. java中用iterator去检查最大值_Java中的Iterator vs forEach
  2. 使用jquery调试ajax接口-2
  3. 【Apache】 alias+proxy 将资源路径指向某个本地目录
  4. Linux RedHat7.0 上vsftp配置
  5. java short 写法_Java Short longValue()用法及代码示例
  6. Java finalize()的使用
  7. android ontoch事件无反应_一切从android的handler说起(三)
  8. python 素描化图像_python实现图片素描效果
  9. 华为手机拍照后图库里无照片_EMUI的相册不这么用,还用什么智能手机?
  10. springboot redis 断线重连_Redis的主从复制是如何做的?复制过程中也会产生各种问题?...