android,Android,Dialog,android" /> android,Android,Dialog,android" />

Android对话框的外部类

Android对话框的外部类,android,dialog,android,Android,Dialog,android,我正在学习Android开发,并开始创建一个大约有20个对话框(是,没有按钮)的应用程序。 我计划创建一个类,在按yes/no时返回true或false。那么班级就到了 public class CustomDialog{ Boolean Resp; public Boolean Confirm(Activity act, String Title, String ConfirmText, String CancelBtn, String OkBtn) { AlertD

我正在学习Android开发,并开始创建一个大约有20个对话框(是,没有按钮)的应用程序。 我计划创建一个类,在按yes/no时返回true或false。那么班级就到了

public class CustomDialog{
Boolean Resp;

public Boolean Confirm(Activity act, String Title, String ConfirmText,
        String CancelBtn, String OkBtn) {
    AlertDialog dialog = new AlertDialog.Builder(act).create();
    dialog.setTitle(Title);
    dialog.setMessage(ConfirmText);
    dialog.setCancelable(false);
    dialog.setButton(DialogInterface.BUTTON_POSITIVE, OkBtn,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int buttonId) {
                     Resp = true;
                }
            });
    dialog.setButton(DialogInterface.BUTTON_NEGATIVE, CancelBtn,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int buttonId) {
                    Resp = false;
                }
            });

    dialog.setIcon(android.R.drawable.ic_dialog_alert);
    dialog.show();
    if (Resp == null){
        Resp = false;
    }
    return Resp;
}
}
现在,当我从主活动中调用这个时,在一个按钮单击侦听器中,应用程序正在崩溃

@Override
public void onClick(View v) {
    if (v.getId() == R.id.Toast){
        CustomDialog tans = new CustomDialog();
        boolean tan = tans.Confirm(MainActivity.this, "Message Title", "Message Text Goes Here", "No", "Yes");
        if (tan){
            Toast.makeText(this, "wow", Toast.LENGTH_LONG).show();
        }
    }
}
我需要你的建议来解决这个问题


编辑:我已更新了代码,应用程序现在没有崩溃,但按Yes时没有吐司。

尝试将此改为主活动。此如下:

 Boolean tan = tans.Confirm(MainActivity.this, "Confirmation", "Are you sure?", "No", "Yes");
还有一件事,您的布尔tan变量值为null,因为Resp变量在tans期间未初始化。将调用Confirm方法Resp值仅在用户单击“是”或“否”按钮后更改