zoukankan      html  css  js  c++  java
  • Dialog向Activity传递数据

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



         MainActivity代码: 

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



          最后效果: 

     

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

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/a446276468/p/5310285.html
Copyright © 2011-2022 走看看