`
superonion
  • 浏览: 128294 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Dialog向Activity传递数据

阅读更多
       我们知道,从一个Activity向另一个Activity传递数据,用Intent实现。而当一个浮在Activity之上的Dialog需要向该Activity传递数据时,应该怎么实现呢?接着上一篇文章:用Dialog创建带箭头的对话框
       现在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()方法:


  • 大小: 65.3 KB
  • 大小: 71.7 KB
1
0
分享到:
评论

相关推荐

    dialog效果的activity

    - **启动参数传递**:可以通过`Intent.putExtra()`方法传递数据给Dialog Activity,以便它可以根据不同场景显示相应的内容。 4. **SelectPicPopupWindow** - **PopupWindow的使用**:`SelectPicPopupWindow`可能...

    Dialog样式的Activity-可以在任何地方弹出的Dialog

    此外,还可以通过Intent传递数据给`DialogActivity`,例如: ```java intent.putExtra("key", "value"); ``` 在`DialogActivity`中接收这些数据: ```java String value = getIntent().getStringExtra("key"); ``...

    filter-dialog-activity,Android项目的筛选对话框活动.zip

    项目可能包含一个Activity类,负责实例化并显示筛选对话框,同时处理用户在Dialog上的操作,如点击事件,然后将筛选结果传递回Activity进行数据处理。 4. **数据过滤机制** 这个开源项目可能包含了数据过滤的逻辑...

    DialogActivity

    - 使用`Intent`启动`DialogActivity`,并在需要时传递数据。 ```java Intent intent = new Intent(this, DialogActivity.class); startActivity(intent); ``` 5. **控制区域外是否可点击** - 通过设置`...

    Activity与AlertDialog值传递

    在Android应用开发中,`Activity`是应用程序的基本组件...这种方法使得我们可以灵活地在对话框和活动之间传递数据,增强了用户体验。在实际开发中,根据需求,你可能还需要处理其他复杂情况,如错误检查、数据验证等。

    dialog和fragment的运用

    3. 如果需要传递数据给DialogFragment,可以通过setArguments()方法传入Bundle对象。 4. 在DialogFragment中处理用户的交互事件,如点击按钮,然后通过接口回调或事件Bus等方式将结果传递回Activity。 对于Fragment...

    《详解Dialog 三 自定义对话框视图及参数传递》源码

    例如,我们可以在Dialog中展示从服务器获取的数据,同时允许用户在Dialog中进行操作,然后通过接口回调将结果传递回Activity或Fragment。 以上就是关于自定义Dialog视图和参数传递的详细讲解。通过自定义,我们可以...

    底部自定以dialog添加recyclerView

    这个滑动条不仅能够滑动,而且其值能够实时传递到宿主Activity中,增强了用户交互体验。 首先,我们来详细解析这个项目的组成部分: 1. **底部弹出对话框(Bottom Dialog)**: 底部弹出对话框通常是在用户界面的...

    Androd自定义对话框Dialog视图及参数传递的实现方法

    关于参数传递,如果需要在对话框中使用外部的数据,可以在创建对话框时将这些数据作为构造函数的额外参数传入。例如,如果我们需要传递一个字符串数组来展示不同的图片,可以这样做: ```java public CustomDialog...

    Android:自定义Dialog-Demo

    4. **处理用户交互**:在Dialog的监听器中,你可以处理用户的点击事件,例如关闭Dialog、保存数据或执行其他操作。这可以通过在布局文件中为每个按钮设置ID,然后在Dialog类中获取并设置监听器来实现。 5. **自定义...

    intent实现Activity之间的启动

    例如,我们可以将字符串数据从源Activity传递到目标Activity: ```java // 在源Activity中 Intent intent = new Intent(SourceActivity.this, TargetActivity.class); intent.putExtra("key", "value"); start...

    ListView点击item弹出Dialog

    5. 当Dialog中的按钮被点击,更新对应item的数据,可以通过直接修改Adapter数据源或通过回调接口传递给Activity/Fragment。 6. 更新数据后,调用`notifyDataSetChanged()`刷新ListView。 通过这种方式,我们可以...

    安卓Android源码——DialogShow.zip

    - 通常,Dialog会与启动它的Activity进行数据交互,这可以通过回调函数、接口或使用`Bundle`传递数据。 9. **Dialog的动画效果**: - 可以通过设置动画资源文件来实现Dialog的入场和退场动画,提高用户体验。 10...

    dialog样式的Activty

    这时,可以通过`Intent`来启动`Activity`,并传递数据。例如: ```java Intent intent = new Intent(this, CustomDialogActivity.class); intent.putExtra("title", "对话框标题"); intent.putExtra("message", ...

    android 省市区三级联动选择城市控件(dialog样式)

    通过接口或者回调函数,将选择的结果传递回父Activity或Fragment。 总结来说,这个"android 省市区三级联动选择城市控件(dialog样式)"是一个实用的组件,它结合了三级联动的概念和Dialog的交互方式,为Android应用...

    Intent2.rar

    例如,如果在onPause()中进行数据保存,那么在Dialog Activity显示时,底层Activity的数据就不会被保存,这可能会导致意外的数据丢失。而了解Dialog Activity不会执行onStop(),则可以帮助开发者避免在该方法中执行...

    DialogDemo

    - 可能还包括了样例数据和事件处理逻辑,以便用户更好地理解和使用这个自定义Dialog。 通过学习和研究"DialogDemo",开发者可以了解到自定义Dialog的基本流程,并且能够根据实际项目需求,灵活地修改XML布局,实现...

    自定义DialogDemo

    同时,通过参数化构造函数或方法,我们可以灵活地传递数据给Dialog,以适应不同的使用场景。 此外,为了提供更好的用户体验,我们还可以考虑以下几点: 1. 设置合适的对话框宽度,既不能过大影响主界面,也不能过小...

    Android Dialog 多种 弹出框

    在Android开发中,`Dialog`是一种非常常见的组件,它用于在主界面之上显示临时的、半透明的窗口,用于向用户展示信息或者进行简单的交互。本篇内容将深入探讨`Dialog`在Android中的多种实现方式及其应用,以帮助...

    自定义仿ios可滑动Dialog

    在Android开发中,自定义对话框(Dialog)是一种常见的用户界面元素,用于向用户展示临时信息或进行简短交互。本教程将详细讲解如何创建一个仿iOS风格的可滑动选择的Dialog,包括时间选择、字段选择等功能。通过...

Global site tag (gtag.js) - Google Analytics