Dialogs general function - returns a boolean based on a user click

I would like to write a function that displays a warning dialog that returns a boolean based on the button pressed

private Boolean ShowWarningMessageBox(String Title, String message) { boolean returnValue = false; AlertDialog.Builder builder = new AlertDialog.Builder( getApplicationContext()); builder.setTitle(Title); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { returnValue = true; } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); returnValue = false; } }); builder.show(); return returnValue; } 

I wrote the above function, but the problem is that the Inner class will not be able to access the returnValue variable, since it is not final. But to make this final is not my purpose.

I am a C # developer and I am trying to achieve something like android

 private DialogResult ShowWarningMessageBox(string errorMessage) { DialogResult result = MessageBox.Show(errorMessage, Resources.WarningCaption.ToString(), MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); return result; } 

Any help would be appreciated

+4
source share
1 answer

Complete solution. Try

1) Create interface

 import android.content.DialogInterface; public interface AlertMagnatic { public abstract void onButtonClicked(boolean value); } 

2) Summarize the method to confirm the dialogue.

 public static void getConfirmDialog(final Context mContext, final String title, final String msg, final String positiveBtnCaption, final String negativeBtnCaption, final boolean isCancelable, final AlertMagnatic target) { ((Activity) mContext).runOnUiThread(new Runnable() { @Override public void run() { AlertDialog.Builder builder = new AlertDialog.Builder(mContext); int imageResource = android.R.drawable.ic_dialog_alert; Drawable image = mContext.getResources().getDrawable( imageResource); builder.setTitle(title) .setMessage(msg) .setIcon(image) .setCancelable(false) .setPositiveButton(positiveBtnCaption, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { target.onButtonClicked(true); } }) .setNegativeButton(negativeBtnCaption, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { target.onButtonClicked(false); } }); AlertDialog alert = builder.create(); alert.setCancelable(isCancelable); alert.show(); if (isCancelable) { alert.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface arg0) { target.onButtonClicked(false); } }); } } }); } 

3) How to use

 getConfirmDialog(getString(R.string.logout), getString(R.string.logout_message), getString(R.string.yes), getString(R.string.no), false, new AlertMagnatic() { @Override public void onButtonClicked(boolean value) { } }); 
+7
source

Source: https://habr.com/ru/post/1502543/


All Articles