Create a custom dialog class with a built in listener like so.
public class MyDialog extends Dialog {
String title;
String text;
String button;
DialogListener listener;
interface DialogListener {
void onCompleted();
void onCanceled();
}
public MyDialog(Context context, String title, String text, String button) {
super(context);
this.title = title;
this.text = text;
this.button = button;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Typeface tf_hn = Typeface.createFromAsset(getContext().getAssets(), "helveticaneue.ttf");
Typeface tf_hn_bold = Typeface.createFromAsset(getContext()..getAssets(), "helveticaneuebd.ttf");
Resources res = getContext().getResources();
requestWindowFeature(Window.FEATURE_NO_TITLE); // not the normal dialog title
setContentView(R.layout.view_dialog);
TextView tv_dialog_title = (TextView) findViewById(R.id.tv_dialog_title);
tv_dialog_title.setText(title);
tv_dialog_title.setTypeface(tf_hn_bold);
tv_dialog_title.setTextColor(res.getColor(R.color.white));
TextView tv_dialog_text = (TextView) findViewById(R.id.tv_dialog_text);
tv_dialog_text.setText(text);
tv_dialog_text.setTypeface(tf_hn);
tv_dialog_text.setTextColor(res.getColor(R.color.white));
Button dialogButton = (Button) findViewById(R.id.bt_dialog_button);
dialogButton.setTypeface(tf_hn_bold);
dialogButton.setText(button);
dialogButton.setTextColor(res.getColor(R.color.white));
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null)
listener.onCompleted();
MyDialog.this.dismiss();
}
});
setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if(listener != null)
listener.onCanceled();
}
});
} public void setDialogListener(DialogListener listener) {
this.listener = listener;
}
}
And to implement the dialog:
MyDialog dialog = new MyDialog(getContext(), title, text, button);
dialog.setDialogListener(new MyDialog.DialogListener() {
@Override
public void onCompleted() {
// do stuff when dialog is completed
}
@Override
public void onCanceled() {
// do stuff when dialog is cancelled
}
});
dialog.show();