package com.itheima.momo.dialog;

import com.itheima.momo.R;

import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View; public abstract class BaseDialog extends AlertDialog implements android.view.View.OnClickListener{ protected BaseDialog(Context context) {
//通过构造指定主题,主题中就已经设置了弧形边角的背景
super(context, R.style.BaseDialog);
// TODO Auto-generated constructor stub
} @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initView();
initListener();
initData();
} public abstract void initView();
public abstract void initListener();
public abstract void initData();
public abstract void processClick(View v); /*
* 这个是继承得来的方法,用这个方法后,一个activity里面所有组件的按钮都只要去
* 实现抽象方法就行,组件上就会自动的挂上侦听,而不用每个组件都写一个点击事件
* 了,这样可以提高代码的复用性,还有代码的间接性。
*/
@Override
public void onClick(View v) {
processClick(v); }
}
package com.itheima.momo.dialog;

import com.itheima.momo.R;

import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class ConfirmDialog extends BaseDialog { private String title;
private String message;
private TextView tv_dialog_title;
private TextView tv_dialog_message;
private Button bt_dialog_cancel;
private Button bt_dialog_confirm;
private OnConfirmListener onConfirmListener; public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} protected ConfirmDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
} //在类中写一个静态方法,直接获取本类的对象。
public static void showDialog(Context context, String title, String message, OnConfirmListener confirmListener){
ConfirmDialog dialog = new ConfirmDialog(context);
dialog.setTitle(title);
dialog.setMessage(message);
dialog.setConfirmListener(confirmListener);
dialog.show();
} @Override
public void initView() {
//设置对话框显示的布局文件
setContentView(R.layout.dialog_confirm); tv_dialog_title = (TextView) findViewById(R.id.tv_dialog_title);
tv_dialog_message = (TextView) findViewById(R.id.tv_dialog_message); bt_dialog_cancel = (Button) findViewById(R.id.bt_dialog_cancel);
bt_dialog_confirm = (Button) findViewById(R.id.bt_dialog_confirm); } @Override
public void initListener() {
bt_dialog_cancel.setOnClickListener(this);
bt_dialog_confirm.setOnClickListener(this); } @Override
public void initData() {
tv_dialog_title.setText(title);
tv_dialog_message.setText(message); } @Override
public void processClick(View v) {
switch (v.getId()) {
//如果取消按钮按下时,侦听存在,那么调用侦听的onCancel
case R.id.bt_dialog_cancel:
if(onConfirmListener != null){
onConfirmListener.onCancel();

}
break;
case R.id.bt_dialog_confirm:
if(onConfirmListener != null){
onConfirmListener.onConfirm();

}
break;
}
//对话框消失
dismiss();
} public void setConfirmListener(OnConfirmListener confirmListener) {
this.onConfirmListener = confirmListener;
}
//自己定义一个接口,为了保证其能够被多次复用。
public interface OnConfirmListener{
void onCancel();
void
onConfirm();
}
}

---------------------------------------------------------------------------------------------

private void showDeleteDialog() {
ConfirmDialog.showDialog(getActivity(), "提示", "真的要删除会话吗?", new OnConfirmListener() {

@Override
public void onConfirm() {
deleteSms();
}

@Override
public void onCancel() {
}
});

}

android 学习随笔二十九(自定义监听 )的更多相关文章

  1. android 学习随笔二十(多媒体编程 )

    1.图片处理 加载大图片 图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节* 16色图:每个像素占用1/2个字节* 256色图:每个像素占用1个 ...

  2. android 学习随笔二十八(应用小知识点小结 )

    去掉标题栏的方法 第一种:也一般入门的时候经常使用的一种方法requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setConte ...

  3. android 学习随笔二十六(动画:属性动画)

    属性动画,属性动画是真正改变对象的某个属性的值 * 补间动画,只是一个动画效果,组件其实还在原来的位置上,xy没有改变1.位移:* 第一个参数target指定要显示动画的组件* 第二个参数proper ...

  4. android 学习随笔二十五(动画:补间动画)

    补间动画(TweenAnimation) * 原形态变成新形态时为了过渡变形过程,生成的动画就叫补间动画(为了让对象从初始状态向结束状态改变的过程更加自然而自动生成的动画效果)* 位移.旋转.缩放.透 ...

  5. android 学习随笔二十四(动画:帧动画)

    帧动画,一张张图片不断的切换,形成动画效果 * 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长 * FrameAnimatio ...

  6. android 学习随笔二十二(小结)

    ADB进程 * adb指令 * adb install xxx.apk * adb uninstall 包名 * adb devices * adb start-server * adb kill-s ...

  7. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  8. android 项目学习随笔二十(屏幕适配)

    1.图片适配 放入相同名称的资源文件,机器根据不同分辨率找相近的资源 240*320 ldpi 320*480 mdpi 480*800 hdpi 720*1280 xhdpi 2.布局适配 在不同的 ...

  9. Android学习笔记(十九)——内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...

随机推荐

  1. qt 屏幕旋转

    qt屏幕旋转的方法 参考链接 http://mikenoodle.blog.163.com/blog/static/11333522010102754154616/ http://blog.csdn. ...

  2. POCO 是什么?

    POCO(Plain Old C#/CLR Object),意为:纯老式的 C#/CLR 对象,也可以称为简单的 C#/CLR 对象,POCO 的概念来自于 POJO(Plain Old Java O ...

  3. pages 元素(ASP.NET 设置架构)web.config 详解

    pages 元素(ASP.NET 设置架构)    buffer="[True|False]"   enableEventValidation="[True|False] ...

  4. LeetCode Peeking Iterator

    原题链接在这里:https://leetcode.com/problems/peeking-iterator/ 题目: Given an Iterator class interface with m ...

  5. sqlserver 2000事务复制问题

    2000现在用的估计不多了,把之前收集的一些复制问题整理发布出来.可能都是些很白很二的问题,但人总是由最初的无知不断成长,不对之处欢迎指正. sqlserver 2000事务复制问题服务器A(发布) ...

  6. RouterOS 软路由配置固定IP上网+DHCP

    实现要求: 局域网所有PC机自动获取IP地址,能相互访问并且能访问外网 环境要求: 一台PC机安装两张网卡 ( 使用常用的网卡芯片,例如Intel芯片.RTL瑞昱芯片等 ) 配置说明 1.外网IP地址 ...

  7. shapely and geos break在distance方法

    问题 from shapely.geometry import Point print Point(0,0).distance(Point(1,1)) 报错 python: GeometryCompo ...

  8. CentOS安装Git

    准备安装Gityum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel #下载git-1 ...

  9. my.cnf详解

    [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir ...

  10. Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法

    1.错误原因: date类型不能包含秒以后的精度. 如日期:2010-01-01 20:02:20.0 解决方法:将日期秒以后的精度去除, to_date(substr(INVOICE_DATE,1, ...