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:
- Lista personalizada con selección única CheckBox
- CheckBox cambia el valor dos veces
- Agregar CheckBox a la vista de fila ListView hace que la fila no haga clic
- ListView.getCheckedItemPositions no puede devolver elementos marcados en SparseBooleanArray
- Cómo evitar que el menú emergente se cierre en la casilla de verificación haga clic
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!
- Usando la casilla de verificación para filtrar contactos y obtener el número de teléfono
- Casilla de verificación en CursorAdapter
- android cómo establecer el icono de la casilla de verificación en el derecho?
- Android: vinculación de datos de una base de datos a un CheckBox en un ListView?
- Android Checkbox listview seleccionar todo (desactivar / activar)
- Cambiar colorControlActivated color programmically
- Puede cambiar el tipo de fuente de un Edittext, un botón de radio y un CheckBox en Android
- Adición con StringBuilder
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.
- ¿Cuáles son los honorarios a desarrollar en iOS, Android y WP?
- Org.apache.http.conn.HttpHostConnectException: Conexión a http: // localhost rechazada en android