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. Selenium2学习-020-WebUI自动化实战实例-018-获取浏览器窗口位置大小

    在 UI 自动化测试过程中,每个机器上浏览器的默认大小.默认位置不尽相同,需要截图的时候,页面元素可能显示不完全,因而我们需要知道浏览器的宽度,或者直接在启动浏览器时,设置浏览器的宽度或位置(此文暂不 ...

  2. TCP/IP和HTTP的举例理解

    闲暇中逛博客园,看到TCP/IP和HTTP关键词,就突然想深刻理解他们(以前真的是只知皮毛),于是看了关于TCP/IP和HTTP的博文,就有了此文. 首先要引出开放系统互连参考模型(OSI:Open ...

  3. raspberryPi 拍照

    调用python的库,学习raspberryPi的摄像头操作方法. 参考链接: https://www.raspberrypi.org/learning/getting-started-with-pi ...

  4. Java 实现网站当前在线用户统计

    1. import java.util.HashSet; import javax.servlet.ServletContext; import javax.servlet.http.HttpSess ...

  5. 两排滚动js

    html: <div class="mr_frbox">        <div class="showtitle">          ...

  6. 学习WEb前端开发的需要哪些条件

    第一阶段--HTML的学习. 超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏 ...

  7. Linux就这个范儿 第14章 身在江湖

    Linux就这个范儿 第14章 身在江湖 “有人的地方就有江湖”,如今的计算机世界就像一个“江湖”.且不说冠希哥有多么无奈,把微博当QQ的局长有多么失败,就说如此平凡的你我什么时候就成了任人摆布的羔羊 ...

  8. tomcat部署新的项目的时候出现报错信息: Invalid byte tag in constant pool: 15

    上面一堆tomcat启动的提示信息省略掉,下面是报错的具体信息:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid ...

  9. shell中引用其他脚本的方法

    在Shell中引用其他脚本的方法是source   filename.sh 或    .    filename.sh 注意:      .   和   filename.sh之间必须有空格

  10. MongoDB固定集合

    固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...