2011-12-29 11 views

Respuesta

2

Puede establecer las preferencias dentro de su código y verificar si ya está lleno antes de llenarlo. Siempre que no le dé acceso a los usuarios para cambiar esta información, todo lo que pueden hacer es "borrar datos locales", lo que hará que el programa vuelva a llenar los datos si lo hace bien.

Utilizo esta técnica para almacenar identificaciones únicas para el dispositivo, que está conectado, etc. El usuario ni siquiera (y nunca) debe saber de lo que estoy pendiente, todo lo que saben es que tienen un programa sencillo eso hace lo que necesitan hacer.

Ejemplo:

SharedPreferences settings = context.getSharedPreferences("preferanceName", 0); 
SharedPreferences.Editor editor = settings.edit(); 
int value = foo; 
editor.putInt("ValueToStore", value); 
editor.commit(); 
+0

Gracias. ¿Es posible hacer el elemento en "preferencses.xml" que aparecerá como texto "gris" (solo lectura) sin posibilidad de edición interactiva? – yuriy

+0

Hago mi propia actividad de preferencia personalizada, así que realmente no podría decírtelo. Suena como otra pregunta para SO: D – Pyrodante

+0

@yuriy: Sí, puede hacer Preferencias de solo lectura agregando android: enabled = "false" al XML. Consulte aquí para obtener más información: http://developer.android.com/reference/android/preference/Preference.html –

15

I logrado esto con lo siguiente:

En mi application_preferences.xml I tiene la siguiente preferencia. Esto hace que siga siendo negro (no gris), pero el usuario no puede editarlo. Hacerlo gris hace que sea difícil de leer.

<EditTextPreference 
    android:key="version" 
    android:title="@string/version" 
    android:enabled="false" 
    android:selectable="false" 
    android:persistent="false" 
    android:shouldDisableView="false"/> 

En la actividad preferencia onCreate método, obtener la preferencia versión y establecer el título a la versión de la aplicación.

EditTextPreference versionPref = (EditTextPreference)findPreference("version"); 
String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 
versionPref.setTitle(getString(R.string.version) + ": " + version); 
+1

Gracias, exactamente lo que estaba buscando. – Vyrx

+1

Exactamente lo que estaba buscando –

34

¿Por qué no usar android.preference.Preference directamente?

<Preference 
android:key="version" 
android:title="@string/version" /> 

Sin diálogo de edición, no más atributos, e información solamente !!

//Set the version string in your code 
findPreference("version").setSummary(version); 
+2

¿Alguna manera de hacer que esto refleje la versionString en el manifiesto? – scone

+1

@scone String version = getPackageManager(). GetPackageInfo (getPackageName(), 0) .versionName; – tpbapp

+1

@tpbapp Estaba esperando una forma de hacer esto sin código. – scone

0

Kevin Westwood it is perfect thanks !!

En mi caso me acaba de cambiar el setTitle a setSummary, por lo que el valor es visible abajo del título.

String serverUrl = "http://..."; 
    EditTextPreference pref = (EditTextPreference)findPreference("serverPrefKey"); 
    pref.setSummary(serverUrl); 
Cuestiones relacionadas