2013-07-26 18 views
11

Come posso controllare quale file deve essere usato da un PreferencesFragment per leggere e scrivere le impostazioni? Non riesco a trovare nulla a riguardo nei documenti. Se questo non può essere controllato tramite risorse di codice o XML, ci sono garanzie, ciò che il file si chiama, quindi posso aprire in modo esplicito utilizzandoQuale file di impostazioni legge/scrive PreferenceFragment?

Activity.getSharedPreferences(String name, int mode) 

Grazie.

+0

Questo può essere utile per copiare il file di preferenze dopo aver scritto ad esso http: // stackoverflow.com/a/25585711/1815624 – CrandellWS

risposta

36

È necessario modificare PreferenceManager dello SettingsFragment. Questo è ciò che sembra

// Constants 
//-------------------------------------------------------------------------- 
private final static String TAG = SettingsFragment.class.getName(); 
public final static String SETTINGS_SHARED_PREFERENCES_FILE_NAME = TAG + ".SETTINGS_SHARED_PREFERENCES_FILE_NAME"; 

// Life-cycle 
//-------------------------------------------------------------------------- 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "onCreate()"); 

    // Define the settings file to use by this settings fragment 
    getPreferenceManager().setSharedPreferencesName(SETTINGS_SHARED_PREFERENCES_FILE_NAME); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.preferences); 
} 

Poi è possibile accedere a questo file di settings di fuori del frammento in questo modo:

SharedPreferences preferences = getActivity().getSharedPreferences(
     SettingsFragment.SETTINGS_SHARED_PREFERENCES_FILE_NAME, 
     Context.MODE_PRIVATE); 
+1

Utilizzando 'PreferenceFragmentCompat', ho dovuto definire il file delle impostazioni nel metodo onCreatePreferences' (anziché in onCreate) perché funzioni. – TouchBoarder

Problemi correlati