首页 > 程序开发 > 移动开发 > Android > 正文
Android Dialog使用
2017-06-19       个评论    来源:nirean的博客  
收藏    我要投稿

Android Dialog使用

1、调用现有的确认弹窗

创建一个DialogInterface类型的监听器来监听弹窗,并设置在点击 positive按钮后执行的操作。然后创建一个现有的确定弹窗 AlertDialog.Builder bundle =
new AlertDialog.Builder(Each_Area_Mark.this);并设置其positive 按钮和negetive按钮的监听器。最后show出这个弹窗。bundle.show();

13、确认弹窗
delete.setOnClickListener(new View.OnClickListener() {   //删除按钮点击事件
                @Override
                public void onClick(View v) {
                    DialogInterface.OnClickListener onClickListener =
                            new DialogInterface.OnClickListener() {  //执行删除操作的监听器
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            int result = dao.deleteMark(listAllArea.get(position).getMark());
                            if(result == 0)
                            {
                                Toast.makeText(Each_Area_Mark.this, R.string.unableDeleteMark,
                                        Toast.LENGTH_SHORT).show();
                            }
                            else {
                                rightSqu -=listAllArea.get(position).getSquare() ;
                                info.setText(rightArea + "区 " + rightSqu + "/"
                                        + haveSquare.getAllSquare() + "亩");
                                listAllArea.remove(position);
                                //listAllArea = dao.getAllMark(rightArea);
                                markAdapter.notifyDataSetChanged();
                            }
                        }
                    };
                    System.out.println("delete");    //确认弹窗
                    AlertDialog.Builder bundle = new AlertDialog.Builder(Each_Area_Mark.this);
                    bundle.setTitle("确定要删除吗?");
                    bundle.setPositiveButton("确定",onClickListener); //确认 启动执行删除操作的监听器
                    bundle.setNegativeButton(“取消",null);
        bundle.show();
                }
            });

2、自定义Dialog

设计布局文件




    

        

        

        

        

重构Dialog

package com.world.hello.selfdialog;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 * 创建自定义的dialog,主要学习其实现原理
 * Created by chengguo on 2016/3/22.
 */
public class SelfDialog extends Dialog {

    private Button yes;//确定按钮
    private Button no;//取消按钮
    private TextView titleTv;//消息标题文本
    private TextView messageTv;//消息提示文本
    private String titleStr;//从外界设置的title文本
    private String messageStr;//从外界设置的消息文本
    //确定文本和取消文本的显示内容
    private String yesStr, noStr;

    private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
    private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器

    /**
     * 设置取消按钮的显示内容和监听
     *
     * @param str
     * @param onNoOnclickListener
     */
    public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) {
        if (str != null) {
            noStr = str;
        }
        this.noOnclickListener = onNoOnclickListener;
    }

    /**
     * 设置确定按钮的显示内容和监听
     *
     * @param str
     * @param onYesOnclickListener
     */
    public void setYesOnclickListener(String str, onYesOnclickListener onYesOnclickListener) {
        if (str != null) {
            yesStr = str;
        }
        this.yesOnclickListener = onYesOnclickListener;
    }

    public SelfDialog(Context context) {
        super(context, R.style.MyDialog);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.free_exercise_sure_dialog_layout);
        //按空白处不能取消动画
        setCanceledOnTouchOutside(false);

        //初始化界面控件
        initView();
        //初始化界面数据
        initData();
        //初始化界面控件的事件
        initEvent();

    }

    /**
     * 初始化界面的确定和取消监听器
     */
    private void initEvent() {
        //设置确定按钮被点击后,向外界提供监听
        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (yesOnclickListener != null) {
                    yesOnclickListener.onYesClick();
                }
            }
        });
        //设置取消按钮被点击后,向外界提供监听
        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (noOnclickListener != null) {
                    noOnclickListener.onNoClick();
                }
            }
        });
    }

    /**
     * 初始化界面控件的显示数据
     */
    private void initData() {
        //如果用户自定了title和message
        if (titleStr != null) {
            titleTv.setText(titleStr);
        }
        if (messageStr != null) {
            messageTv.setText(messageStr);
        }
        //如果设置按钮的文字
        if (yesStr != null) {
            yes.setText(yesStr);
        }
        if (noStr != null) {
            no.setText(noStr);
        }
    }

    /**
     * 初始化界面控件
     */
    private void initView() {
        yes = (Button) findViewById(R.id.yes);
        no = (Button) findViewById(R.id.no);
        titleTv = (TextView) findViewById(R.id.title);
        messageTv = (TextView) findViewById(R.id.message);
    }

    /**
     * 从外界Activity为Dialog设置标题
     *
     * @param title
     */
    public void setTitle(String title) {
        titleStr = title;
    }

    /**
     * 从外界Activity为Dialog设置dialog的message
     *
     * @param message
     */
    public void setMessage(String message) {
        messageStr = message;
    }

    /**
     * 设置确定按钮和取消被点击的接口
     */
    public interface onYesOnclickListener {
        public void onYesClick();
    }

    public interface onNoOnclickListener {
        public void onNoClick();
    }
}
点击复制链接 与好友分享!回本站首页
上一篇:十一、Android设计模式
下一篇:十、Android XML解析
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |
版权所有: 88bifa.com--致力于做实用的IT技术学习网站