2012-03-05 14 views
6

Volevo sapere quando viene creato un file di preferenze condivise per la prima volta?Quando viene creato un file di preferenze condiviso?

ho il seguente codice:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="User settings"> 
     <EditTextPreference android:title="User Name" 
     android:key="userName" android:summary="Please Enter User Name"></EditTextPreference> 
     <EditTextPreference android:title="Password" 
     android:key="password" android:summary="Password Here" 
     android:inputType="textPassword"></EditTextPreference> 
</PreferenceCategory> 

</PreferenceScreen> 


    public class PrefsActivity extends PreferenceActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.prefs); 
    } 
} 

Inoltre, come posso utilizzare getSharedpreference(), con il nome del file? Non so se devo prima creare questo file e inserirlo nella directory dei dati dell'app?

Intendevo quando è stato creato un file di preferenze condivise: quando l'applicazione è installata, o qualche tempo dopo? Se più tardi, quando?

risposta

12

Il metodo getSharedPreferences(name, mode) crea automaticamente il file con il nome specificato, quindi non è necessario crearlo. In realtà, la posizione esatta e il nome di questo file delle preferenze non sono documentati, quindi ti suggerirei di non fare affidamento su alcune convenzioni quando provi a access this file directly, poiché la posizione e il nome potrebbero essere modificati in futuro - SharedPreferences dovrebbe essere l'unico modo per accedere a questo file.

Il file di preferenza con un determinato nome viene creato quando viene chiamato per la prima volta getSharedPreferences(name, mode) o addPreferencesFromResource(preferencesResId).

2

Non sono sicuro al 100% di cosa stai parlando.

Non è necessario creare alcun file quando si utilizza PreferenceScreens o SharedPreferences. Questo è gestito da SharedPreferences dietro le quinte. Credo che ciò accada quando si imposta per la prima volta un valore nella schermata Preferenze, ma sinceramente non ne sono sicuro.

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
String username = preferences.getString("username", "defaultvalue"); 
String password = preferences.getString("password", "defaultvalue"); 

Tale codice otterrebbe le SharedPreferences per PreferenceScreen dopo che sono state impostate. Se non sono stati impostati, si utilizzano i valori predefiniti.

+1

grazie per questo .. Intendevo quando è stato creato un file di preferenze condivise: quando l'applicazione è installata, o un po 'di tempo dopo? Se più tardi, quando? – Smitha

+0

Credo che sia stato creato sia la prima volta che appare la schermata Preference, sia quando una voce in PreferenceScreen viene prima impostata dall'utente. Come ho detto prima, non ne sono assolutamente sicuro. – Knossos

+0

sì .. penso che tu abbia ragione! – Smitha

-4

È necessario impostare l'attività di preferenza in onCreateOptionMenu.

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 


public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.setting: 
      startActivity(new Intent(this,Settingpage.class)); 
      Toast.makeText(this, "setting clicked", Toast.LENGTH_LONG).show(); 
      break; 
    } 
    return true; 
} 
+0

Questo non sembra avere nulla a che fare con la domanda. –

0

Le preferenze condivise avrebbero creato sotto /data/data/appname/shared_prefs/prefs_name.xml

0

Come detto in altri commenti, non sarai mai interagendo direttamente con i file delle preferenze condivisi. Leggi e scrivi valori su di loro utilizzando un oggetto SharedPreferences. Il metodo Context.getSharedPreferences() accetta una stringa come primo argomento (il nome del file delle preferenze condivise con cui si desidera interagire) e restituisce un oggetto SharedPreferences. Secondo il documentation for the getSharedPreferences() method:

Se un file di preferenze con questo nome non esiste, verrà creato quando si recupera un editor (SharedPreferences.edit()) e quindi eseguire il commit modifiche (Editor.commit()).

Quindi è quando viene creato il file delle preferenze condivise. Altri metodi che restituiscono oggetti SharedPreferences stanno facendo la stessa cosa in contesti diversi.

Ad esempio:

Il metodo Activity.getPreferences()

chiama semplicemente i getSharedPreferences sottostanti (String, int) Metodo passando in nome della classe di questa attività come il nome preferenze.

Problemi correlati