0

我正在学习 Android 开发并开始创建一个有大约 20 个对话框(是的,没有按钮)的应用程序。我计划创建一个类,该类将在是/否按下时返回真或假。然后上课在这里

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();
        }
    }
}

我需要你的建议来解决。

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

4

1 回答 1

1

尝试改为MainActivity.this 如下所示

 Boolean tan = tans.Confirm(MainActivity.this, "Confirmation", "Are you sure?", "No", "Yes");

还有一件事,您的布尔 tan 变量值为null,因为Resp变量在tans.Confirm方法被调用期间未初始化。Resp值仅在用户单击是或否按钮后才会更改。

于 2013-08-03T13:19:01.450 回答