Pregunta El usuario de verificación de Android ha iniciado sesión antes, de lo contrario, inicia la actividad de inicio de sesión


Quiero que la actividad de inicio de sesión se inicie cuando el usuario inicie la aplicación pero no haya iniciado sesión antes. Si se ha completado un inicio de sesión exitoso antes, la aplicación omitirá la página de inicio de sesión y se moverá a MainMenu.java. Lo que tengo ahora es:

    public class Login extends Activity implements OnClickListener, TaskCompleteCallback{

     first_time_check();

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.configure);

    ...}

private boolean first_time_check() {    
    String first = mPreferences.getString("first", null);
        if((first == null)){
            Intent i = new Intent(Login.this, MainMenu.class);
             startActivity(i);
        }
        return false;
    }

...
        SharedPreferences.Editor editor = mPreferences.edit();
        editor.putString("first", value);
    ...

        editor.commit();        

        // Close the activity
        Intent i = new Intent(Login.this, MainMenu.class);
         startActivity(i);
    }           

Pero obtengo FCs '. ¿Hay algún problema con la forma en que implementé SharedPreferences?


32
2017-07-16 15:56


origen


Respuestas:


Tu código simplemente nunca llama eso first_time_check(), por lo tanto, el reenvío automático en el caso de un usuario recurrente no funciona.

Podrías en onCreate() hacer

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    first_time_check();

    setContentView(R.layout.configure);

    ...}

Entonces, para un nuevo usuario, first_time_check() lo enviaría a la página de inicio de sesión, de lo contrario se mostraría el diseño actual y podría continuar en esta página.


13
2017-07-16 16:07



Está utilizando preferencias compartidas. Eso es bueno.

Hay un pequeño ejemplo en este enlace. Eso probablemente resolverá el problema.

http://developer.android.com/guide/topics/data/data-storage.html

Básicamente, no veo que leas el valor almacenado. Lo estás almacenando y luego comprometiéndolo. Pero no hay un código donde lo estás leyendo. Solo cuando lo lees, puedes decidir qué actividad debes lanzar. Tienes que llamar a first_time_check () para resolver esto.

Espero haber podido ayudarte.


4
2017-07-16 16:08



Puede guardar los detalles de inicio de sesión en el método onSaveInstanceState () y luego restaurarlo cuando se reinicie su actividad. Por ejemplo adentro onRestore ().


0
2018-02-25 09:16



Esto se puede hacer de dos formas. Uno los almacena en variables globales y el segundo almacena los datos en preferencias compartidas. ver esta ejemplo.


0
2018-05-15 11:38