Cómo agregar una casilla de verificación a un cuadro de diálogo de alerta

Actualmente, cuando el usuario abre mi aplicación, un AlertDialog abre preguntándoles si les gustaría actualizar a la versión profesional. Necesito agregar un CheckBox al AlertDialog que hará que la aplicación ya no muestra el AlertDialog cuando el usuario abre la aplicación.

Aquí es lo que tengo para el AlertDialog ahora:

 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(); 

Si alguien pudiera mostrarme cómo agregar una CheckBox al AlertDialog que hará que la aplicación ya no muestre AlertDialog cuando el usuario abra la aplicación, eso sería genial. ¡Gracias por adelantado!

setView(View) utilizar el método setView(View) en el objeto AlertDialog.Builder . Esto colocará el pasado en View entre el área de mensaje y los botones. Basta con inflar una View con un CheckBox y pasar que CheckBox Aquí hay un ejemplo:

Checkbox.xml

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/checkbox" style="?android:attr/textAppearanceMedium" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5dp" /> </FrameLayout> 

Código en su actividad

 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(); 

Primero debe definir un diseño que contenga el mensaje y la casilla de verificación para deshabilitar la alerta en vistas posteriores. A continuación, en lugar de llamar a builder.setMessage , llamará a:

 builder.setView(myAlertViewWithDisablingCheckbox); 

Luego, cuando el usuario haga clic en el botón de diálogo de alerta, tendrá que comprobar si se ha marcado esa casilla de verificación y guardar esa preferencia en SharedPreferences su aplicación. A continuación, puede utilizar esa preferencia para determinar si este cuadro de diálogo de alerta debe mostrarse al usuario de nuevo.

Puede usar una lista de varias líneas con sólo un elemento:

 final boolean checked = new boolean {false}; builder.setMultiChoiceItems(new String[]{"Remember decision}, checked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean b) { checked[i] = b; } }); 

A continuación, en OnClick() de un botón de diálogo de alerta, puede comprobar el valor de checked[0] y guardar ese valor en las Sharedpreferences su aplicación:

 builder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { if(checked[0]){ SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("preferences_never_buy_pro", true); editor.apply(); } dialog.cancel(); } }); 

Con esta preferencia puede decidir si el diálogo se volverá a mostrar en el futuro.

  • ANDROID - ExpandableListView
  • Lista personalizada haciendo clic con las casillas de verificación
  • Cómo obtener todos los elementos seleccionados de un ListView?
  • Android 5.0 hace que las casillas de verificación no seleccionadas sean invisibles cuando el fondo es blanco
  • Establecer el estado de las casillas de verificación en Multichoice AlertDialog en Android
  • Android CheckBoxPreference - un / marque todas las preferencias
  • Eliminar un oyente de una vista en android
  • Cómo seleccionar toda la casilla de verificación en listview personalizado de la actividad en android
  • Cómo agregar EditText en listview y obtener su valor dinámicamente en todas las filas?
  • Cambiar el color de fondo del checkbox en android
  • Cambiar el tamaño de una casilla de verificación en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.