2010-06-09 42 views
14

OK, así que estoy jugando con una aplicación de Android.¿Puedo ejecutar una actividad de Android solo la primera vez que se abre una aplicación?

El caso de uso del 90% es que los usuarios desean ir directamente a la pantalla de la lista principal para encontrar lo que están buscando. Eso es lo que quiero como mi pantalla predeterminada.

La primera vez que un usuario carga la aplicación, se requiere cierta configuración antes de que su pantalla de lista tenga algún valor para ellos.

Así que mi pregunta es cómo puedo mostrar la actividad de configuración la primera vez que se abre la aplicación, y luego la pantalla de lista para futuras aperturas.

También quiero poner un botón de demostración en la pantalla de configuración, así que supongo que más que detectar que es la primera vez, específicamente quiero detectar si el usuario ha realizado ciertas configuraciones dentro de la primera pantalla.

Respuesta

4

me gusta el método de dweebsonduty. una forma similar de hacer esto es guardar su información de configuración en archivos en la tarjeta SD. su aplicación podría comenzar comprobando esos archivos y cargando la información. si la carga es exitosa, pasa a la siguiente actividad, si no inicia la actividad apropiada para solicitar la entrada del usuario.

He hecho lo mismo, pero en lugar de cambiar las actividades, simplemente cambio de vista hasta que tenga toda la información que necesito, y luego sigo.

0

¿Cómo va a almacenar la configuración?

Si está en SQLlite puede simplemente crear una tabla llamada firstuse y poner un campo allí llamado llamado hasbeenused y hacer que sea nulo. Luego, cuando se utiliza la aplicación, puede poner un 1 allí. Luego puede leerlo cada vez que su aplicación se carga y si ese campo = 1 luego ir a su siguiente actividad.

+2

Tal vez ni siquiera necesita el campo adicional; solo pudo verificar si la información de configuración requerida está allí y si no, vomitar la actividad. Eso parece más extensible de todos modos. – tloflin

+1

Lo intenté con preferencias compartidas, sin embargo, eso causa un mal comportamiento del botón Atrás. Busqué alguna forma de manipular la pila, pero parece que solo quiero hacer eso para actividades del mismo tipo –

17

Después de la primera vez que el usuario ha cargado la aplicación, puede almacenar los detalles de si el usuario ha realizado las configuraciones en SharedPreferences.

protected void storeSharedPrefs(String value) { 
     /* 
     * Storing in Shared Preferences 
     */ 
     editor.putString("first", value); 
     editor.commit(); //Commiting changes 
    } 

Comprobar cada uno en la aplicación vez que se carga, si es la primera vez y detalles de la configuración se ha introducido correctamente por SharedPreferences cheques

private boolean first_time_check() { 
     /* 
     * Checking Shared Preferences if the user had pressed 
     * the remember me button last time he logged in 
     * */ 
     String first = uPreferences.getString("first", null); 
     if((first == null)){ 
      return false; 
     } 
     else 
      return true; 
    } 
+4

Incluso mejor que comparar getString () null es para usar contiene(). – Plutor

+7

Mejor aún usando un booleano en lugar de una cadena. 'editor.putBoolean (PREF_FIRST_LAUNCH, false);' y first_time_check contiene solo 'return PreferenceManager.getDefaultSharedPreferences (getApplicationContext()) \t \t .getBoolean (PREF_FIRST_LAUNCH, true); ' – Sylphe

+0

Utilicé este método. Pero estoy teniendo problemas con el botón Atrás. Cuando la aplicación sale usando el botón Atrás, la próxima vez que se inicia, se supone que NO es la primera vez que se ejecuta. Lo que no es lo que uno quiere para una aplicación de Android, hace que el programador no pueda configurar todo a su valor inicial para el inicio de la aplicación. ¿Que se supone que haga? – Tina

2

Muchas aplicaciones de realidad almacenar la versión actual en SharedPreferences, y comprobar contra para si se ha instalado una actualización. Es una forma ingeniosa de lograr una ventana emergente de "lo que ha cambiado" o asegurarse de que se establezcan algunas configuraciones (no me gustaría tener una bandera booleana porque si alguna vez quieres agregar una configuración adicional, necesitarás una segunda bandera y se vuelve desordenado después del tercero, etc.).

1

String VersionValue = "v.1.0"; final Cadena PREFS_NAME = "MyPrefsFile";

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

    if (settings.getBoolean(VersionValue, true)) { 
     //the app is being launched for first time, do something   
     NewDialogFragment newFragment = new NewDialogFragment(); 
     newFragment.show(getFragmentManager(), "New"); 
     // record the fact that the app has been started at least once 
     settings.edit().putBoolean(VersionValue, false).commit(); 
    } 

Se podía hacerlo de esta manera y aún así obtener el mismo resultado que lo probé es una pequeña solución si u no entiende completamente cómo comprobar si la aplicación se actualiza. En cambio, con este código simplemente puede cambiar String VersoinValue a su versión actual de la aplicación y Android pensará que la aplicación es una nueva aplicación nueva y solo mostrará el código que escribió una vez hasta que modifique VersionValue en su próxima actualización.(:

+0

¡Aún mejor! Podrías crear una cadena en tu archivo string.XML y hacer referencia a tu Número de versión y a tu VersionValue en tu archivo activity.java principal. [Asegúrese de poner también el código anterior con el valor de la versión y demás en el método OnCreate] –

Cuestiones relacionadas