2013-03-06 9 views
5

Ci sono alcune funzionalità nella mia app che richiedono Android versione 4.2+. Quindi, nella mia attività principale, avrò bisogno di controllare le funzioni del sistema operativo disponibili e modificare le voci delle preferenze (Abilita/Disabilita) che sono definite nel mio PreferenceActivity.Come modificare lo stato di una voce di preferenza dall'esterno di PreferenceActivity?

Il seguente codice non è raggiungibile da fuori PreferenceActivity

ListPreference prefReport = (ListPreference)getPreferenceScreen().findPreference("pref_report"); 
prefDspProfile.setValue("0"); 

Quindi la mia domanda è come modificare gli elementi preferenze da PreferenceActivity dall'esterno.

risposta

2

Se si utilizza PreferenceActivity implicitamente si utilizza un file SharedPreference. Quindi, al di fuori di PreferenceActivity è possibile accedere al file SharedPrefence e modificarlo. Presto, tali cambiamenti si rifletteranno sulla tua PreferenceActivity.

È necessario un contesto per accedere a SharedPreference. Aspettiamo, ad esempio, il metodo onCreate di altre sempliciAttività.

UPDATE: Con questo approccio non sono in grado di attivare/disattivare gli elementi. È possibile modificare i loro valori o rimuoverli

@Override 
protected void onCreate(Bundle state){ 
    super.onCreate(state); 

    // Restore preferences 
    SharedPreferences settings = getPreferences(MODE); 
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     //change your setting here 
     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 

} 

altro modo, e il mio parere migliore e più facile è Fornire risorse alternative. Puoi fornire molti file xml, che definiscono le impostazioni dell'app, in base al livello dell'API Android, utilizzando un qualificatore di risorsa. Ad esempio: v2, v17.

res-v4 
    setting.xml 

res-v17 
    setting.xml -> This file can include specific Jelly Beans configs 
+0

per quanto riguarda la prima soluzione, gli articoli non possono essere abilitati/disabilitati quindi non saprò se sono compatibili con questa versione di Android o meno. La tua seconda soluzione è la mia risposta.Il codice di programmazione Bruno Mateus –

+0

Siete i benvenuti. –