I'd like to have an AlertDialog builder that only has one button that says OK or Done or something, instead of the default yes and no. Can that be done with the standard AlertDialog, or would I have to use something else?
10 Answers
Couldn't that just be done by only using a positive button?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Look at this dialog!")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do things
}
});
AlertDialog alert = builder.create();
alert.show();
-
1Works great, as long as you don't mind that single button right justified. :( – SMBiggs Dec 16 '15 at 21:23
-
2@ScottBiggs Button alignment in dialogs are decided by the system and could change between devices, versions, and languages (RTL etc.). The App shouldn't attempt to set the alignment but the intent (positive, negative etc.) – aberaud Aug 24 '16 at 21:35
-
1I don't want the button to perform any action, it should simply just dismiss the alertbox, Is it a good practice to make an empty onClick listener or should i use a different approach. – Utkarsh Vishnoi Feb 19 '18 at 18:33
You could use this:
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setTitle("Title");
builder1.setMessage("my message");
builder1.setCancelable(true);
builder1.setNeutralButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();

- 10,145
- 15
- 56
- 70

- 4,324
- 2
- 24
- 14
Another approach
Builder alert = new AlertDialog.Builder(ActivityName.this);
alert.setTitle("Doctor");
alert.setMessage("message");
alert.setPositiveButton("OK",null);
alert.show();
Bonus
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
builder.setMessage("Message dialog with three buttons");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do things
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do things
}
});
builder.setNeutralButton("CANCEL", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do things
}
});
AlertDialog alert = builder.create();
alert.show();
Now it is up to you to use one,two or three buttons..

- 33,936
- 20
- 234
- 300
This is the closer I could get to the one liner this should be if the Android API was any smart:
new AlertDialog.Builder(this)
.setMessage(msg)
.setPositiveButton("OK", null)
.show();

- 18,610
- 7
- 91
- 99

- 2,492
- 2
- 26
- 32
For code reuse, You can make it in a method like this
public static Dialog getDialog(Context context,String title, String message, DialogType typeButtons ) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title)
.setMessage(message)
.setCancelable(false);
if (typeButtons == DialogType.SINGLE_BUTTON) {
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//do things
}
});
}
AlertDialog alert = builder.create();
return alert;
}
public enum DialogType {
SINGLE_BUTTON
}
//Other code reuse issues like using interfaces for providing feedback will also be excellent.

- 4,442
- 2
- 40
- 65
-
-
-
This is okay if it's just for a "confirmation dialog" with a single button with no listener. Anything more than that and it's not worth wrapping in a helper like this because you'll need to handle each button press. – Joshua Pinter Jul 27 '18 at 22:30
Kotlin?
val dialogBuilder = AlertDialog.Builder(this.context)
dialogBuilder.setTitle("Alert")
.setMessage(message)
.setPositiveButton("OK", null)
.create()
.show()

- 18,750
- 9
- 86
- 81
Alert Dialog
alert dialog with a single button.
alert dialog with an icon.
alert dialog with three-button.
alert dialog with a choice option, radio button.
alert dialog with the multi-choice option, checkbox button.
<resources>
<string name="app_name">Alert Dialog</string>
<string name="info_dialog">Info Dialog</string>
<string name="icon_dialog">Icon Dialog</string>
<string name="rate_dialog">Rate Dialog</string>
<string name="singleOption_dialog">Single Options Dialog</string>
<string name="multiOption_dialog">Multi Options Dialog</string>
<string-array name="fruit_name">
<item>Apple</item>
<item>Banana</item>
<item>Orange</item>
<item>Grapes</item>
<item>Watermelon</item>
<item>Nothing</item>
</string-array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/info_dialog"
android:layout_width="300dp"
android:layout_height="55dp"
android:text="@string/info_dialog"
android:textAllCaps="false"
android:textColor="@color/colorPrimaryDark"
android:textSize="14sp" />
<Button
android:id="@+id/icon_dialog"
android:layout_width="300dp"
android:layout_height="55dp"
android:text="@string/icon_dialog"
android:textAllCaps="false"
android:textColor="@color/colorPrimaryDark"
android:textSize="14sp" />
<Button
android:id="@+id/rate_dialog"
android:layout_width="300dp"
android:layout_height="55dp"
android:text="@string/rate_dialog"
android:textAllCaps="false"
android:textColor="@color/colorPrimaryDark"
android:textSize="14sp" />
<Button
android:id="@+id/single_dialog"
android:layout_width="300dp"
android:layout_height="55dp"
android:text="@string/singleOption_dialog"
android:textAllCaps="false"
android:textColor="@color/colorPrimaryDark"
android:textSize="14sp" />
<Button
android:id="@+id/multi_dialog"
android:layout_width="300dp"
android:layout_height="55dp"
android:text="@string/multiOption_dialog"
android:textAllCaps="false"
android:textColor="@color/colorPrimaryDark"
android:textSize="14sp" />
</LinearLayout>
public class MainActivity extends AppCompatActivity {
String select;
String[] fruitNames;
Button infoDialog, iconDialog, rateDialog, singleOptionDialog, multiOptionDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
infoDialog = findViewById(R.id.info_dialog);
rateDialog = findViewById(R.id.rate_dialog);
iconDialog = findViewById(R.id.icon_dialog);
singleOptionDialog = findViewById(R.id.single_dialog);
multiOptionDialog = findViewById(R.id.multi_dialog);
infoDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
infoDialog();
}
});
rateDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ratingDialog();
}
});
iconDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iconDialog();
}
});
singleOptionDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SingleSelectionDialog();
}
});
multiOptionDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MultipleSelectionDialog();
}
});
}
/*Display information dialog*/
private void infoDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Info");
dialogBuilder.setMessage("Some informative message for the user to do that.");
dialogBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogBuilder.create().show();
}
/*Display rating dialog*/
private void ratingDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Rate Us");
dialogBuilder.setMessage("If you liked it, please rate it. It will help us grow.");
dialogBuilder.setPositiveButton("Rate", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogBuilder.setNegativeButton("Leave it", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogBuilder.setNeutralButton("May be, later", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogBuilder.create().show();
}
/*Dialog with icons*/
private void iconDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("Info");
dialogBuilder.setIcon(R.mipmap.ic_launcher_round);
dialogBuilder.setMessage("You know, you could have provided some valuable message here!");
dialogBuilder.setPositiveButton("Got it", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogBuilder.create().show();
}
/*Dialog to select single option*/
private void SingleSelectionDialog() {
fruitNames = getResources().getStringArray(R.array.fruit_name);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setTitle("Which fruit you want to eat?");
dialogBuilder.setSingleChoiceItems(fruitNames, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//Toast.makeText(MainActivity.this, checkedItem, Toast.LENGTH_SHORT).show();
select = fruitNames[i];
}
});
dialogBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Item selected: " + select, Toast.LENGTH_SHORT).show();
}
});
dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Cancel", Toast.LENGTH_SHORT).show();
}
});
dialogBuilder.create().show();
}
/*Dialog to select multiple options*/
public void MultipleSelectionDialog() {
final String[] items = {"Apple", "Banana", "Orange", "Grapes", "Watermelon"};
final ArrayList<Integer> selectedList = new ArrayList<>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choice multi item fruit list");
builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
selectedList.add(which);
} else if (selectedList.contains(which)) {
selectedList.remove(which);
}
}
});
builder.setPositiveButton("DONE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ArrayList<String> selectedStrings = new ArrayList<>();
for (int j = 0; j < selectedList.size(); j++) {
selectedStrings.add(items[selectedList.get(j)]);
}
Toast.makeText(getApplicationContext(), "Items selected: " + Arrays.toString(selectedStrings.toArray()), Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
}

- 1,969
- 17
- 17
Its very simple
new AlertDialog.Builder(this).setView(input).setPositiveButton("ENTER",
new DialogInterface.OnClickListener()
{ public void onClick(DialogInterface di,int id)
{
output.setText(input.getText().toString());
}
}
)
.create().show();
In case you wish to read the full program see here: Program to take input from user using dialog and output to screen

- 33
- 1
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
// Single Button
alertDialog.setTitle("Terms & condition");
alertDialog.setIcon(R.drawable.baseline_info_24);
alertDialog.setMessage("Have You read all the T & C ");
alertDialog.setButton("Yes, I have read ", (dialogInterface, i1) -> alertDialog.show());
//setButton is outdated
// Double Button
AlertDialog.Builder delDialog = new AlertDialog.Builder(ListLearn.this);
delDialog.setTitle("Delete");
delDialog.setIcon(R.drawable.baseline_delete_24);
delDialog.setMessage("Are You sure want to delete ? ");
delDialog.setPositiveButton("Yes", (dialogInterface, i16) -> Toast.makeText(ListLearn.this, "Deleted", LENGTH_LONG).show());
delDialog.setNeutralButton("No", (dialogInterface, i12) -> Toast.makeText(ListLearn.this, "Item Not deleted", LENGTH_LONG).show());
delDialog.show();

- 1,460
- 3
- 17
- 37
In Mono for Android you can do this:
var ad = new AlertDialog.Builder(this);
ad.SetTitle("Title");
ad.SetMessage("Message");
ad.SetPositiveButton("OK", delegate { ad.Dispose(); });
ad.Show();

- 151
- 1
- 8