2012-03-05 22 views
6

Quería saber cuándo se creó un archivo de preferencias compartidas por primera vez?¿Cuándo se crea por primera vez un archivo de preferencias compartidas?

tengo el siguiente código:

<?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); 
    } 
} 

Además, ¿cómo puedo usar getSharedpreference(), con el nombre de archivo? No sé si primero tengo que crear este archivo y colocarlo en el directorio de datos de la aplicación.

Quise decir ¿Cuándo se creó por primera vez un archivo de preferencias compartidas: cuando se instala la aplicación, o algún tiempo después? Si más tarde, ¿cuándo?

Respuesta

12

El método getSharedPreferences(name, mode) crea automáticamente el archivo con el nombre especificado, por lo que no necesita crearlo. En realidad, la ubicación exacta y el nombre de este archivo de preferencias no están documentados, por lo que le sugiero que no confíe en algunas convenciones al intentar access this file directly, ya que la ubicación y el nombre pueden cambiarse en el futuro: SharedPreferences debe ser la única manera para acceder a este archivo

El archivo de preferencias con cierto nombre se crea cuando se llama a getSharedPreferences(name, mode) o addPreferencesFromResource(preferencesResId) por primera vez.

2

No estoy 100% seguro de lo que está hablando aquí.

No necesita crear ningún archivo cuando se trata de PreferenceScreens o SharedPreferences. Eso es manejado por SharedPreferences detrás de las escenas. Creo que eso sucede cuando estableces un valor en la pantalla Preferencia, pero sinceramente no estoy seguro.

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

Ese código obtendría las Preferencias Compartidas para su PreferenceScreen una vez que se hayan establecido. Si no se han establecido, use los valores predeterminados.

+1

gracias por ello ... quise decir ¿Cuándo se creó primero un archivo de preferencias compartidas: cuando se instala la aplicación, o algún tiempo después? Si más tarde, ¿cuándo? – Smitha

+0

Creo que se crea la primera vez que aparece PreferenceScreen o cuando un elemento en PreferenceScreen es configurado por primera vez por el usuario. Como dije antes, no estoy totalmente seguro de eso. – Knossos

+0

sí, ¡creo que tienes razón! – Smitha

-4

Tiene que establecer la actividad de intención de preferencia en 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

Esto no parece tener nada que ver con la pregunta. –

0

Las preferencias compartidas serían creados bajo /data/data/appname/shared_prefs/prefs_name.xml

0

Como se ha mencionado en otros comentarios, usted nunca estará interactuando directamente con los archivos de preferencias compartidas. Lees y escribes valores usando un objeto SharedPreferences. El método Context.getSharedPreferences() toma una cadena como primer argumento (el nombre del archivo de preferencias compartidas con el que desea interactuar) y devuelve un objeto SharedPreferences. De acuerdo con la documentation for the getSharedPreferences() method:

Si no existe un archivo de preferencias por este nombre, se creará al recuperar un editor (SharedPreferences.edit()) y luego confirma los cambios (Editor.commit()).

que es cuando se crea el archivo de preferencias compartidas. Otros métodos que devuelven objetos SharedPreferences solo hacen lo mismo en diferentes contextos.

Por ejemplo:

El Activity.getPreferences() método

llamadas con sólo los getSharedPreferences subyacentes método por el que pasa en nombre de la clase de esta actividad como el nombre de preferencias (String, int).

Cuestiones relacionadas