首页 > 其他 > 详细

Dialog向Activity传递数据

时间:2014-12-29 12:00:30      阅读:302      评论:0      收藏:0      [点我收藏+]

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

技术分享

 

Dialog向Activity传递数据

原文:http://www.cnblogs.com/zhujiabin/p/4191301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!