 
                        在Android中很多操作后都要调用一个对话框,所以封装了一个方法,大体如下:
protected void alertDialog(Context mContext, String title, String message)
    {
        // 构造对话框
        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle(title);
        builder.setMessage(message);
        // 确定
        builder.setPositiveButton(R.string.i_know, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        Dialog noticeDialog = builder.create();
        noticeDialog.show();
    }一个典型的 alert 对话框,但有时的可能需求:当用户点击确定按钮后,还需要做点其他的事情,所以我想在 参数当中传递一个对象过来,在click后调用其中的方法,我试着写了一个类:
class DialogButton{
    String bt2 = "";
    public void ok(){
    }
    public void cancel(){}
}然后把之前的方法改成这样;
protected void alertDialog(Context mContext, String title, String message, final DialogButton button)
    {
        // 构造对话框
        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle(title);
        builder.setMessage(message);
        // 确定
        builder.setPositiveButton(R.string.i_know, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                button.ok();
                dialog.dismiss();
            }
        });
        Dialog noticeDialog = builder.create();
        noticeDialog.show();
    }后面调用的时候重写 DialogButton 这里面的方法,因为 alertDialog中 变成了 final DialogButton,所以传过来无效,请问大侠们有什么好的方法 ?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果想后期可以重写,你在这里可以将DialogButton设置成一个接口啊。然后在调用函数传入这个参数的时候(也就是新建DialogButton的时候),来自定义dialogbutton的ok函数和cancel函数的具体实现啊。类似于这样:
public abstract class BaseAlertDialog extends AlertDialog {
}
修改初始化方法传入值即可
可以参考一下我这个写法,这是一个简单的通用消息提示框,模仿了.NET的MessageBox。