实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下:

开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的按钮,Dialog类如下,在MyDialog这个类中实现了一个LeaveMyDialogListener接口,用来实现onclick的点击事件:

package com.Ieasy.Tool;
import com.Ieasy.ieasyware.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyDialog extends Dialog implements android.view.View.OnClickListener {private Context context;private TextView txt;private Button   btnok,btnedit,btncancle,btnsave;private LeaveMyDialogListener listener;public interface LeaveMyDialogListener{   public void onClick(View view);   }   public MyDialog(Context context) {super(context);// TODO Auto-generated constructor stubthis.context = context;}public MyDialog(Context context,int theme,LeaveMyDialogListener listener) {super(context,theme);// TODO Auto-generated constructor stubthis.context = context;this.listener = listener;}@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(com.Ieasy.ieasyware.R.layout.mydialog);btncancle = (Button)findViewById(R.id.mycancle);btnedit   = (Button)findViewById(R.id.myedit);btnok     = (Button)findViewById(R.id.myok);txt       = (TextView)findViewById(R.id.miaosu);btnsave   = (Button)findViewById(R.id.mysave);btncancle.setOnClickListener(this);btnedit.setOnClickListener(this);btnok.setOnClickListener(this);btnsave.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stublistener.onClick(v);}
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="250dp"android:layout_height="wrap_content"android:layout_margin="20dp"android:background="@drawable/night_biz_subscribe_media_recommend_item_bg"android:orientation="vertical" ><TextViewandroid:id="@+id/miaosu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="20dp"android:text="描述"android:textColor="@color/whitesmoke"android:textSize="20sp" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:orientation="horizontal" ><Buttonandroid:id="@+id/myok"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/btnclick"android:textColor="@color/whitesmoke"android:text="确定" /><Buttonandroid:id="@+id/myedit"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/btnclick"android:textColor="@color/whitesmoke"android:text="编辑" /><Buttonandroid:id="@+id/mysave"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/btnclick"android:textColor="@color/whitesmoke"android:text="保存" /><Buttonandroid:id="@+id/mycancle"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:background="@drawable/btnclick"android:textColor="@color/whitesmoke"android:text="取消" /></LinearLayout></LinearLayout></LinearLayout>

引用的style:

<style name="MyDialog" parent="@android:Theme.Dialog"><item name="android:windowFrame">@null</item><item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/night_biz_subscribe_media_recommend_item_bg</item><item name="android:windowIsFloating">true</item><item name="android:windowContentOverlay">@null</item></style>

最后在Activity中调用,通过LeaveMyDialogListener 接口来实现在Activity中的点击事件

MyDialog dialog = new MyDialog(context,R.style.MyDialog,   new MyDialog.LeaveMyDialogListener() {   @Override   public void onClick(View view) {   switch(view.getId()){   case R.id.myok:break;case R.id.myedit:break;case R.id.mycancle:break;case R.id.mysave:dialog.dismiss();default:break;}   }   });   dialog.show();

如果想获得Dialog中的TextView控件可以这样获取,给TextView赋值时候一定要在Dialog show了之后在赋值,你懂得。

TextView text = (TextView) dialog.findViewById(R.id.miaosu);

Android 自定义Dialog类,并在Activity中实现按钮监听事件相关推荐

  1. android 自定义dialog样式,Android 自定义dialog类

    首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...

  2. android 常用的监听器,Android中的Keyboard监听事件

    前言 有关Keyboard监听事件,无非就是以下这几种情况: 1,操作显示或隐藏键盘: 2,判断当前键盘的状态: 3,键盘显示或隐藏后的拦截处理: 只要有使用到EditText,避免不了肯定会遇到以上 ...

  3. html中单选按钮设置监听事件,浅谈监听单选框radio改变事件(和layui中单选按钮改变事件),单选框radio...

    浅谈监听单选框radio改变事件(和layui中单选按钮改变事件),单选框radio 若是只引用jquery的话,监听单选按钮改变事件如下: 男 女 $(document).ready(functio ...

  4. 钉钉中添加回调监听事件

    此类是HttpRequest.java -------------------------------------------------------------------------------- ...

  5. Android 自定义dialog

    my_dialog.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  6. 使用AlertDialog自定义布局,解决自定义控件的监听事件无效的办法

    使用AlertDialog自定义布局,解决自定义控件的监听事件无效的办法 在很多情况下,Android自带对话框的样式满足不了我们项目的需求,这时候我们可以采用为对话框设置自定义布局.如果直接用Dia ...

  7. android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

    1.创建  ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...

  8. html中下拉列表监听事件,ExtJS 下拉框监听事件、日期选择器监听事件、实现动态给items添加删除数据...

    本文将为您描述ExtJS 下拉框监听事件.日期选择器监听事件.实现动态给items添加删除数据,具体实现方法: 1.下拉框 下拉框选择时,触发事件的方法: 在 Ext.form.ComboBox 组件 ...

  9. java 多个监听_​Java中使用for循环对多个Jbutton按钮监听

    Java中Jbutton按钮监听,当多个按钮做的事差不多的时候是可以用for循环的(比如计算器1-9)省事省力. 监听时变量只能是final或者static,不过这些在for循环中明显不行,所以,就在 ...

最新文章

  1. python之接口开发
  2. [译] Swift 中的惰性序列及其原理
  3. 343. Integer Break
  4. ubuntu默认防火墙
  5. HDU多校5 - 6822 Paperfolding(组合数学)
  6. settimeout( )是全局函数吗_JS函数的执行
  7. jvm ide_预热JVM –超快速生产服务器和IDE
  8. LeetCode 443. 压缩字符串(双指针)
  9. Linux环境下利用句柄恢复Oracle误删除的数据文件
  10. TensorFlow tf.keras.losses.CategoricalCrossentropy
  11. linux谁使用内存,linux内存不知被谁用了
  12. 63. (FileInputStream)输入字节流
  13. 100阶乘c语言如何实现,求10000的阶乘(c语言代码实现)
  14. msys 中打开系统程序
  15. 需求跟踪矩阵(Requirement Tracking Matrix)
  16. 构建Arduino和TFT LCD条形码扫描仪
  17. Spark独到见解--Action算子总结
  18. echarts框架下大数据量展示的解决方案
  19. 网络抖动多少ms算正常_【求助】acrh17 ping结果最高延时多少ms?算正常
  20. 天嵌科技TQ2440的uboot启动流程分析学习笔记

热门文章

  1. Linux系统夯住,Linux 系统安装XXD
  2. Python中Tkinter 图形化界面设计(详细教程)
  3. 已知二叉树后序遍历序列是DABEC 中序遍历列是 DEBAC ,它的前序遍历序列是
  4. mysql or不走索引分析
  5. 四川大学一九年计算机研究生名单,四川大学公布数百名研究生清退名单,有的长达18年未完成学业...
  6. js对于鼠标滚轮事件的监听
  7. 金蝶显示服务器,金蝶云桌面显示连接服务器
  8. java drawimage 本地,java drawimage()方法
  9. 二次开发稳定盲盒H5+小程序+源码+独立服务器
  10. LabVIEW 打开NI范例查找器时报错