AlertDialog.Builder dynamically setMessage

I am trying to dynamically set message to AlertDialog.Builder , but when i run the app , no message is shown. I want the message to be changed according to the text the user types on some editText widgets. Any advice appreciated.

private AlertDialog.Builder builder;
private AlertDialog dialog;
private CharSequence alertMessage;
    // set AlertMessage
public CharSequence setAlertMessage() {
    if (editText0.getText().toString().equals("το αγόρι") &&
            editText1.getText().toString().equals("το κορίτσι") &&
            editText2.getText().toString().equals("ένας άντρας") &&
            editText3.getText().toString().equals("μια γυναίκα")) {
        alertMessage = ("Συγχαρηρήρια! Πάτησε ΟΚ για να\nπροχωρήσεις στην επόμενη διεπαφή");
    } else if (editText0.getText().toString().equals("το αγορι") &&
            editText1.getText().toString().equals("το κοριτσι") &&
            editText2.getText().toString().equals("ενας αντρας") &&
            editText3.getText().toString().equals("μια γυναικα")) {
        alertMessage = ("Μάλλον ξέχασες τους τόνους!\nΞαναπροσπάθησε");
    } else if (editText2.getText().toString().equals("o άντρας") || editText2.getText().toString().equals("ο αντρας") &&
            editText3.getText().toString().equals("η γυναίκα") || editText3.getText().toString().equals("η γυναικα")) {
        alertMessage = ("Μάλλον ξέχασες τις αόριστες αντωνυμίες\n(ενας , μια)\nΠάτησε ΟΚ για να ξαναπροσπαθήσεις");
    }
    return alertMessage;
}
dialog = builder.create();
        basicsBtn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (editText0.getText().toString().equals("το αγόρι") &&
                    editText1.getText().toString().equals("το κορίτσι") &&
                    editText2.getText().toString().equals("ένας άντρας") &&
                    editText3.getText().toString().equals("μια γυναίκα")) {
                dialog.show();
            }
            else if (editText0.getText().toString().equals("το αγορι") &&
                    editText1.getText().toString().equals("το κοριτσι") &&
                    editText2.getText().toString().equals("ενας αντρας") &&
                    editText3.getText().toString().equals("μια γυναικα")) {
                dialog.show();
            }
            else if (editText2.getText().toString().equals("o άντρας") || editText2.getText().toString().equals("ο αντρας") &&
                    editText3.getText().toString().equals("η γυναίκα") || editText3.getText().toString().equals("η γυναικα")) {
                dialog.show();
            }
            else {
                Toast.makeText(getApplicationContext(),"Έκανες κάποιο λάθος!Ξαναπροσπάθησε.",Toast.LENGTH_SHORT).show();
            }
        }
    });
builder.setMessage(setAlertMessage());

Upvotes: 0

Views: 579

Answers (1)

Konrad Krakowiak
Konrad Krakowiak

Reputation: 12365

When you built your dialog you have to create them by method create() from Builder class and after that you have to display it by method show() from Dialog class.

You have to change way how you display dialog after click on:

 basicsBtn2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (editText0.getText().toString().equals("το αγόρι") &&
                editText1.getText().toString().equals("το κορίτσι") &&
                editText2.getText().toString().equals("ένας άντρας") &&
                editText3.getText().toString().equals("μια γυναίκα")) {
            new AlertDialog.Builder(YourActivity.this).setMessage(setAlertMessage()).create().show();
        }
        else if (editText0.getText().toString().equals("το αγορι") &&
                editText1.getText().toString().equals("το κοριτσι") &&
                editText2.getText().toString().equals("ενας αντρας") &&
                editText3.getText().toString().equals("μια γυναικα")) {
            new AlertDialog.Builder(YourActivity.this).setMessage(setAlertMessage()).create().show();
        }
        else if (editText2.getText().toString().equals("o άντρας") || editText2.getText().toString().equals("ο αντρας") &&
                editText3.getText().toString().equals("η γυναίκα") || editText3.getText().toString().equals("η γυναικα")) {
            new AlertDialog.Builder(YourActivity.this).setMessage(setAlertMessage()).create().show();
        }
        else {
            Toast.makeText(getApplicationContext(),"Έκανες κάποιο λάθος!Ξαναπροσπάθησε.",Toast.LENGTH_SHORT).show();
        }
    }

Upvotes: 1

Related Questions