Currently when the user opens my app, an AlertDialog
opens, asking them if they would like to upgrade to the pro version.
I need to add a CheckBox
to the AlertDialog
that will make the app no longer show the AlertDialog
when the user opens the app.
Here is what I have for the AlertDialog
now:
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(" MY_TEXT"); builder.setMessage(" MY_TEXT ") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Uri uri = Uri.parse("market://details?id=MY_APP_PACKAGE"); Intent intent = new Intent (Intent.ACTION_VIEW, uri); startActivity(intent); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }).show();
How do I add a CheckBox
to the AlertDialog
that will make the app no longer show the AlertDialog
when the user opens the app?
AlertDialog.Builder. setSingleChoiceItems(CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener) Set a list of items to be displayed in the dialog as the content, you will be notified of the selected item via the supplied listener. AlertDialog.Builder. setTitle(CharSequence title)
You have to use the method setView(View)
on the AlertDialog.Builder
object. This will put the passed in View
between the message area and buttons. Simply inflate a View
with a CheckBox
and pass that in. Here's an example:
checkbox.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/checkbox" style="?android:attr/textAppearanceMedium" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> </FrameLayout>
Code in your Activity
View checkBoxView = View.inflate(this, R.layout.checkbox, null); CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox); checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // Save to shared preferences } }); checkBox.setText("Text to the right of the check box."); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(" MY_TEXT"); builder.setMessage(" MY_TEXT ") .setView(checkBoxView) .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Uri uri = Uri.parse("market://details?id=MY_APP_PACKAGE"); Intent intent = new Intent (Intent.ACTION_VIEW, uri); startActivity(intent); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }).show();
The way to make a checkbox list is to use setMultiChoiceItems
in the AlertDialog
.
// Set up the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Choose some animals"); // Add a checkbox list String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; boolean[] checkedItems = {true, false, false, true, false}; builder.setMultiChoiceItems(animals, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // The user checked or unchecked a box } }); // Add OK and Cancel buttons builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // The user clicked OK } }); builder.setNegativeButton("Cancel", null); // Create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show();
Here I hard coded which items in the list were already checked. It is more likely that you would want to keep track of them in an ArrayList<Integer>
. See the documentation example for more details. You can also set the checked items to null
if you always want everything to start unchecked.
For context
, you can use this
if you are in an Activity.
My fuller answer is here.
// Set up the alert builder val builder = AlertDialog.Builder(context) builder.setTitle("Choose some animals") // Add a checkbox list val animals = arrayOf("horse", "cow", "camel", "sheep", "goat") val checkedItems = booleanArrayOf(true, false, false, true, false) builder.setMultiChoiceItems(animals, checkedItems) { dialog, which, isChecked -> // The user checked or unchecked a box } // Add OK and Cancel buttons builder.setPositiveButton("OK") { dialog, which -> // The user clicked OK } builder.setNegativeButton("Cancel", null) // Create and show the alert dialog val dialog = builder.create() dialog.show()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With