• 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()方法: 

  • 相关阅读:
    Android三角标签View:TriangleLabelView
    HTML5坦克大战1
    HTML5坦克大战
    html5制作坦克大战
    HTML学习
    HashMap
    数据库中的事务
    路由器外网访问内网
    java反射(二)
    java集合(二)
  • 原文地址:https://www.cnblogs.com/a446276468/p/5310285.html
Copyright © 2020-2023  润新知