博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dialog向Activity传递数据
阅读量:5807 次
发布时间:2019-06-18

本文共 2344 字,大约阅读时间需要 7 分钟。

PopupDialog中声明一个内部接口PriorityListener,接口中声明一个回调函数refreshPriorityUI,用于在 Dialog的监听事件触发后刷新Activity的UI显示。然后在MainActivity中的Button点击事件中实现这个接口并将其作为 PopupDialog的构造函数的参数传入,并实现refreshPriorityUI()方法。话不多说,直接上代码——

PopupDialog代码:

public class PopupDialog extends Dialog {    /**     * 自定义Dialog监听器     */    public interface PriorityListener {        /**         * 回调函数,用于在Dialog的监听事件触发后刷新Activity的UI显示         */        public void refreshPriorityUI(String string);    }        private PriorityListener listener;    /**     * 带监听器参数的构造函数     */    public PopupDialog(Context context, int theme, PriorityListener listener) {        super(context, theme);        this.listener = listener;    }    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         setContentView(R.layout.popup_dialog);         Button buttonUp = (Button) findViewById(R.id.btn_up);         buttonUp.setOnClickListener(new Button.OnClickListener() {                        @Override            public void onClick(View v) {                dismiss();                listener.refreshPriorityUI("数据来自:上");                            }        });    }}

MainActivity代码:

public class MainActivity extends Activity {        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Button button = (Button)findViewById(R.id.btn);        button.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                PopupDialog popupDialog = new PopupDialog(MainActivity.this, R.style.dialog, new PopupDialog.PriorityListener() {                                        @Override                    public void refreshPriorityUI(String string) {                        Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();                    }                });                popupDialog.setCanceledOnTouchOutside(true); // 点击Dialog之外的区域对话框消失                Window window = popupDialog.getWindow();                WindowManager.LayoutParams lp = window.getAttributes();                lp.y = -64; // 设置竖直方向的偏移量                lp.dimAmount = 0f; // 弹出对话框的时候背景不变暗                popupDialog.show();            }        });    }}

最后效果:

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

 

转载地址:http://ujubx.baihongyu.com/

你可能感兴趣的文章
SSH中调用另一action的方法(chain,redirect)
查看>>
黑马程序员--NSString和NSMutableString的常用方法
查看>>
elixir 高可用系列 - 目录
查看>>
字节跳动(用户喜好)
查看>>
ASP.Net jquery ajax取后台的值
查看>>
springboot 使用maven 打包 报 (请使用 -source 7 或更高版本以启用 diamond 运算符) 错误解决办法...
查看>>
什么是代码现代化?
查看>>
【2011集训贾志鹏】Crash 的数字表格
查看>>
【UR #5】怎样跑得更快
查看>>
多项式幂函数(加强版)
查看>>
springboot 2.0配置集成thymeleaf的坑
查看>>
like的性能问题
查看>>
vue 中使用 async/await 将 axios 异步请求同步化处理
查看>>
BZOJ1078 [SCOI2008]斜堆
查看>>
Digests from CG articales
查看>>
C++day07 学习笔记
查看>>
弹性盒子
查看>>
password
查看>>
JBPM流程部署之部署解析器相关对象扩展
查看>>
python---time模块使用详解
查看>>