2011-05-05 15 views
7

Tengo una aplicación con 2 actividades, la preferencia y la actividad principal, necesito la pantalla de preferencias para mostrar la primera vez que se ejecuta la aplicación para que el usuario pueda realizar alguna configuración. Revisé las respuestas sobre este tema y no parecen muy claras, pero entiendo que tiene que ver con verificar que haya archivos de preferencias compartidos vacíos.Mostrando la pantalla de preferencias se ejecuta la primera aplicación y preguntas relacionadas

¿Alguien puede por favor darme un código para resolver esto y en qué actividad pondría el código? Además, todavía estoy en la etapa de desarrollo, por lo que ya tengo configurada mi preferencia, ¿cómo puedo deshacer esto?

Gracias de antemano

Respuesta

2

Asumo que se está ejecutando un emulador, cuando se inicia el emulador que tiene la opción de "borrar datos guardados" cuando lo inicie, por lo que será como si lo hubiera iniciado como si acabara de iniciar la aplicación. Alternativamente, puede entrar en la configuración -> Aplicaciones -> Usted aplicación -> Eliminar datos.

En cuanto a su solución de codificación, no tengo nada útil en este momento, pero lo que debe hacer es comenzar su actividad principal, ejecutar un procedimiento/función para comprobar si el archivo de preferencia compartida está vacío, y si es comenzar la actividad de preferencia, de lo contrario ejecuta su actividad principal. Alternativamente, en lugar de verificar si el archivo está vacío, puede ver si un valor que está buscando la entrada del usuario (por ejemplo, UserID) es nulo o no. Si ese valor no es nulo, significa que la aplicación puede continuar.

+0

¿Cómo puedo encontrar esta opción para "borrar datos guardados"? – ycomp

+0

Declaro en mi respuesta que puede hacerlo desde el emulador en la configuración de la aplicación como mencioné, o desde el Administrador de Android SDK/AVD. Cuando enciendes el dispositivo hay una opción para "Limpiar datos de usuario" – Sorean

+0

gracias ... Estaba confundido pensando en buscarlo dentro del emulador ... (para "borrar datos guardados"), ahora sé que debo buscar en el AVD ... el único problema es que tampoco puedo encontrarlo allí ... – ycomp

14

1) Cuando su actividad principal comienza comprobar una preferencia booleano con el valor predeterminado establecido en false. Si es falso, inicie su actividad preferida, si es verdadera, entonces sabrá que la ha guardado como verdadera.

SharedPreferences prefs = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
boolean haveWeShownPreferences = prefs.getBoolean("HaveShownPrefs", false); 

if (!haveWeShownPreferences) { 
    // launch the preferences activity 
} else { 
    // we have already shown the preferences activity before 
} 

2) En su actividad preferencias guardar la misma preferencia booleana con un valor de true en onCreate

SharedPreferences prefs = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
SharedPreferences.Editor ed = prefs.edit(); 
ed.putBoolean("HaveShownPrefs", true); 
ed.commit(); 
+0

Gracias, lo estoy probando ahora pero obtengo un error en el MODE_PRIVATE. ¿Para qué es esto? – Amanni

+0

Lo siento, debería haber sido 'Context.MODE_PRIVATE' –

+0

+1 para resolver mi duda ... Gracias. este código me ayudó. –

1

he ordenado esto con este fragmento de código en mi actividad principal

if (prefs.getString("edittextpref", null) == null) 
    { 
     startActivity(new Intent(this, Preferences.class)); 
     return; 
    } 

} 

sólo chequea si uno de sus valores está vacía pero hay que poner esto en la parte inferior de onCreate o bien cuando vuelve a la página principal, estará en blanco.

0

Estoy haciendo algo como esto. Y funciona para mi

String path = "//data//data//"+this.getPackageName()+"//shared_prefs//feedbackpref.xml"; 
boolean exists = (new File(path)).exists(); 
if (exists) { 
    introWindowNavigate=false;         
} 
Cuestiones relacionadas