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

时间: 2024-11-07 22:41:59

Dialog向Activity传递数据的相关文章

Android开发:向下一个activity传递数据,返回数据给上一个activity

1.向下一个activity传递数据 activity1 1 Button button=(Button) findViewById(R.id.button1); 2 button.setOnClickListener(new OnClickListener() { 3 4 @Override 5 public void onClick(View v) { 6 Intent intent=new Intent("1111111111111111111"); 7 intent.addCa

Fragment+Activity传递数据

自己经常使用的知识点,每次到要用的时候都还要再查一次才能懂得使用,终于体会到总结的必要性了. Activity传递数据给Fragment Bundle bundle_fragment=new Bundle (); String selecter=ClassList.get (position); bundle_fragment.putString (ClassTag, selecter); StudentFragment studentFragment = new StudentFragment

Android开发学习之路-回调实现Service向activity传递数据

开启服务的时候,如果我们是通过bindService来绑定服务并且要向服务传递数据,可以直接在Intent中设置bundle来达到效果,但是如果是我们需要从服务中返回一些数据到Activity中的时候,实现起来就有各种各样的方法,比如说使用回调,使用广播等等,今天说的是使用回调的方法. 新建一个工程,并编写一个服务: 1 public class MyService extends Service { 2 private boolean connecting = false; 3 private

android78 Fragment和Activity 传递数据

Activity: package com.itheima.senddata; import android.os.Bundle; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.view.Menu; import android.view.View; import android.widget.EditT

在不同Activity传递数据(四种方式)

四种传递方法: 1.通过Intent传递数据: 2.通过静态变量传递数据: 3.通过剪切板传递数据: 4.通过全局对象传递数据: 分类介绍: 1.通过Intent传递数据: 代码如下: 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_

Andriod:一个Activity向另一个Activity传递数据

假设现在有两个Activity:A与B,A要向B传递数据. 首先要创建两个Activity:Android:当前Activity跳转到另一个Activity A启动B: intent = new Intent(ActivityA.this,ActivityB.class); startActivity(intent); A启动B 并向B传递数据 多了一行 绑定数据 intent = new Intent(ActivityA.this,ActivityB.class); intent.putExt

Android两个Activity传递数据,onActivityResult获取结果时Intent为空问题

    环境:设两个Activity A 和 B,A通过调用startActivityForResult()向B传送数据,B收到数据经过处理后将数据放入Intent使用setResult(resultcode,inten)返回. 现象:在A的onActivityResult(int requestCode, int resultCode, Intent data) 中获取数据时,Intent为空,无法获取数据. 原因:在Activity B中,setResult的调用须在Activity的声明周

Service实时向Activity传递数据案例

转自 http://www.cnblogs.com/linjiqin/p/3147764.html 演示一个案例,需求如下:在Service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示. 步骤如下:1.新建一个android项目工程,取名为demo.2.新建一个Service类,用来实时生产数值,供界面实时显示. package com.ljq.activity;   import android.app.Service; import and

Android Service实时向Activity传递数据

演示一个案例,需求如下:在Service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示. 步骤如下:1.新建一个android项目工程,取名为demo.2.新建一个Service类,用来实时生产数值,供界面实时显示. package com.ljq.activity; import android.app.Service; import android.content.Intent; import android.os.IBinder; impo