最近项目里面用到弹出框,然后我看到很多重复代码,所以我就自己重构了下,废话不多说了,直接讲解吧
1.首先我们先新建一个回调接口
package com.example.demoactivity;
/**
* 这个是点击AlertDialog的回调接口
* @author xiaanming
*
*/
public interface DialogListener {
/**
* 确认按钮的回调方法
* @param id 一个Activity可能有多个AlertDialog,这个id是来区别我们点击的是哪个AlertDialog
*/
public void positive(int id);
/**
* 取消按钮的回调方法,我们一般点取消都是关闭AlertDialog,这里我预留一个回调方法在这里
* @param id
*/
public void negative(int id);
}
对java回调不熟悉的朋友可以看我的另一篇博客
一个经典例子让你彻彻底底理解java回调机制,代码我注释的还比较详细吧
2.新建一个Dialog工具类
package com.example.demoactivity;
import com.example.demoactivity.DialogListener;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
public class DialogUtils {
private Context context;
public DialogUtils(Context context){
this.context = context;
}
/**
*
* @param dialogId 这个是我们区别不同的ConfirmDialog的Id
* @param title ConfirmDialog的标题
* @param message ConfirmDialog的提示消息
* @param positive ConfirmDialog确认按钮上面的文字
* @param negative ConfirmDialog取消按钮上面的文字
* @param dialogListener ConfirmDialog 的监听器
* @return
*/
public Dialog createConfirmDialog(final int dialogId,String title, String message,
String positive, String negative,
final DialogListener dialogListener) {
AlertDialog alert = null;
AlertDialog.Builder builder = null;
builder = new AlertDialog.Builder(context);
builder.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(positive,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//点击确认按钮的回调的方法
dialogListener.positive(dialogId);
}
})
.setNegativeButton(negative,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//点击取消按钮的回调方法
dialogListener.negative(dialogId);
}
});
alert = builder.create();
return alert;
}
/**
* 这个是一个默认的弹出对话框
* @param id
* @param message
* @param dialogListener
* @return
*/
public Dialog createConfirmDialog(int id, String message,final DialogListener dialogListener){
return createConfirmDialog(id, "提示", message, context.getString(android.R.string.ok), context.getString(android.R.string.cancel), dialogListener);
}
}
创建一个Dialog的自己可提示的问题的方法,当然图标我没写进去,大家自行修改,用法也很简单
package com.example.demoactivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private Button mDefaultButton;
private Button mCustomButton;
private DialogUtils dialogUtils;
private static final int DEFAULT = 1;
private static final int CUSTOM = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init(){
dialogUtils = new DialogUtils(MainActivity.this);
mDefaultButton = (Button)findViewById(R.id.button1);
mCustomButton = (Button)findViewById(R.id.button2);
mDefaultButton.setOnClickListener(this);
mCustomButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:{
dialogUtils.createConfirmDialog(DEFAULT, "确认要退出?", new DialogListener() {
@Override
public void positive(int id) {
showToast("点击了确认按钮");
}
@Override
public void negative(int id) {
showToast("点击了取消按钮");
}
}).show();
break;
}
case R.id.button2:{
dialogUtils.createConfirmDialog(CUSTOM, "提示", "检查到该应用有新版本可升级,时候要升级?", "立即升级", "以后再说", new DialogListener() {
@Override
public void positive(int id) {
showToast("点击了升级");
}
@Override
public void negative(int id) {
showToast("点击了以后再说");
}
}).show();
break;
}
}
}
private void showToast(String msg){
Toast.makeText(getApplication(), msg, Toast.LENGTH_SHORT).show();
}
}
上面的代码也比较简单,两个按钮,点击两个按钮做相应的操作,这样子我们创建Dialog的时候是不是直接调用一个函数就搞定了呢,哈哈,马上要下班了,今天晚上自己煲汤喝,我想好了,煲玉米排骨汤喝吧,我最喜欢喝这个汤,没有女朋友的程序员就是苦逼啊,每天晚上都是孤零零的一个人,大家一起努力吧,老婆,房子,车子都在等着你们,哈哈
分享到:
相关推荐
AlertDialog 对话框,包含"确定"和"取消"按钮. 外加 一个 Toast提示
一个简单的自定义AlertDialog
alertDialog,android alertDialog大全
android 使用alertdialog创建自定义对话框
AlertDialog实现代码AlertDialog
1、从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中 2、将AlertDialog的EditText中的值设置到Activity的TextView中 新手在自定义AlertDialog上的疑问笔者猜测主要有两个: 1、自定义的...
AlertDialog特效,根据博客中测试,代码效果。对源代码做了部分修改。确实存在博客中所说问题。
Android AlertDialog对话框 自定义实现遮罩层
Google官方推荐使用DialogFragment代替AlertDialog,很好的解决屏幕旋转产生的问题。。。
Toast Menu Activity ListView AlertDialog ,一个小小的综合,是初级小程序,UI经常用到的。希望有人用得到,看清楚啦,是初级的。
android自定义AlertDialog,例如支付页面,先弹出自定义AlertDialog询问是否愿意支付,确定则弹出另外一个自定义AlertDialog,选择支付方式,android自定义AlertDialog,android自定义AlertDialog,android自定义...
android AlertDialog使用例程 一个在安卓平台上开发使用AlertDialog的例子 很实用很全哦
AlertDialog的各种用法,包含简单、复杂、列表、自定义、日期时间、进度条等的对话框
警告框AlertDialog,实现点击弹出警告框,适合初学者下载学习
比较漂亮的自定义AlertDialog。
自定义AlertDialog布局