Cuadro de diálogo para resetear preferencias


Apuntes de como crear un cuadro de diálogo para pedir al usuario restablecer las preferencias por defecto.

El flujo de acción, es a partir de un icono en la barra de herramientas que al ser pulsado muestre un diálogo de petición de reseteo de las preferencias por defecto, con dos botones, uno cancelar el diálogo y el otro con el texto reset, que al ser pulsado se restablece las preferencias por defecto.

Anadir botón en barra de herramientas

en el archivo que se extiende de PreferenceFragmentCompat en su onViewCreated

val menuHost: MenuHost = requireHost() as MenuHost
menuHost.addMenuProvider(object : MenuProvider {
    override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
        // Add menu items here
        menuInflater.inflate(R.menu.preferences_menu, menu)
    }

    override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
        // Handle the menu selection
        return when (menuItem.itemId) {
            R.id.action_settings_default_restore -> {
                showDialogResetDefaultPreferences()
                true
            }

            else -> false
        }
    }
}, viewLifecycleOwner, Lifecycle.State.RESUMED)

Diálogo resetear preferencias

Diálogo que se mostrará en pantalla al restablecer por defecto

private fun showDialogResetDefaultPreferences() {
    AlertDialog.Builder(requireActivity())
        .setTitle(R.string.prefs_settings_default_restore_title)
        .setMessage(R.string.prefs_settings_default_restore_summary)
        .setPositiveButton(R.string.prefs_settings_default_reset_btn) { dialog, which ->
            //botón OK pulsado
            MyApplication.prefs.restoreDefaultPreferences()
            requireActivity().recreate()
        }
        .setNegativeButton(android.R.string.cancel) { _, _ ->
            //botón cancel pulsado
        }
        .show()
}

Recursos

Recursos usados para el cuadro de dialogo para resetear las preferencias de la aplicación

<string name="action_settings_default_restore">Restore defaults</string>
<string name="prefs_settings_default_restore_title">Reset app preferences</string>
<string name="prefs_settings_default_restore_summary">Are you sure reset preferences to their defaults?</string>
<string name="prefs_settings_default_reset_btn">Reset</string>

archivo res/menu/preferences_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings_default_restore"
        android:orderInCategory="100"
        android:title="@string/action_settings_default_restore"
        android:icon="@drawable/ic_round_settings_backup_restore_24"
        app:showAsAction="always" />
</menu>
Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: