Aggiornamento del valore della casella di controllo nella schermata delle preferenze al momento della modifica del valore in preferenze condivise in Android

StackOverflow https://stackoverflow.com/questions/8384385

Domanda


Ho un'app che utilizza la posizione dell'utente. Ho una finestra di dialogo (foto sotto) che chiede l'autorizzazione dell'utente per "consentire" o "non consentire" l'app per utilizzare la posizione dell'utente (la finestra di dialogo si aprirà la prima volta che gli utenti apre l'app dopo l'installazione o quando l'utente cerca di utilizzare il servizio basato sulla posizione mentre L'utilizzo della posizione dell'utente è "non consentito" dall'utente).
dialog

Uso anche l'elemento preferenza (una casella di controllo) (foto sotto) in PreferenceActivity dove l'utente può attivare le sue preferenze.
prefs item

Per modificare il valore della preferenza condivisa, ho utilizzato questo codice

    public void onClick(DialogInterface dialog, int id)
    {
        sharedPrefs =getSharedPreferences("prefs",MODE_WORLD_WRITEABLE);
        Editor editor = sharedPrefs.edit();
        editor.putBoolean("locationPermission", true);
        editor.commit();
}

Mi aspettavo che il valore della casella di controllo cambiasse automaticamente a seconda della selezione della finestra di dialogo in quanto la chiave "locationpermission" contiene il valore alla casella di controllo. Ma non è così.

Ora come posso mappare la finestra di dialogo (foto 1) Selezione al valore della casella di controllo (foto 2)?

È stato utile?

Soluzione

Il problema è stato risolto utilizzando

sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

invece di

sharedPrefs = getSharedPreferences("prefs", MODE_WORLD_WRITEABLE);

Altri suggerimenti

Puoi chiamare addPreferencesFromResource nel onCreate del tuo PreferenceActivity in modo che la tua interfaccia utente sia popolata dalle preferenze. Inoltre, potresti voler assicurarti che il tuo CheckBoxPreference ha android:persistent-"true" Nella sua definizione XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top