首页 > 代码库 > Dialog向Activity传递数据

Dialog向Activity传递数据

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传递数据