Android – sharedferences devuelve valor nulo

Estoy intentando utilizar las preferencias compartidas para comprobar si el usuario ha iniciado sesión antes de comenzar a usar la aplicación. Guardo el nombre de usuario en shredpreferences cuando el usuario inicia sesión.

Login.java

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); Button btnLogin = (Button) findViewById(R.id.buttonlogin); btnLogin.setOnClickListener(new View.OnClickListener() { public void onClick(View adapt) { EditText usernameEditText = (EditText) findViewById(R.id.EditUserName); userName = usernameEditText.getText().toString(); EditText passwordEditText = (EditText) findViewById(R.id.EditPassword); userPassword = passwordEditText.getText().toString(); if (userName.matches("") && userPassword.matches("")) { toast("Please enter Username and Password"); return; } else if (userName.matches("") || userName.equals("")) { toast("Please enter Username"); return; } else if (userPassword.matches("") || userPassword.equals("")) { toast("Please enter Password"); return; } else { SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("MEM1", userName); editor.commit(); new DownloadFilesTask().execute(); } } }); } private void toast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } private class DownloadFilesTask extends AsyncTask<Void, Void, Void> { protected void onPreExecute() { } protected void onPostExecute(Void result) { toast("user logged in"); startActivity(new Intent(Login.this, MainActivity.class)); finish(); } @Override protected Void doInBackground(Void... params) { return null; } } } 

E intenté comprobar el valor del username antes de que comience mi mainactivity.

 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); String username =sharedPreferences.getString("MEM1", ""); if(username.equalsIgnoreCase("")||username.length()==0) { toast("username is null"); startActivity(new Intent(MainActivity.this, Login.class)); finish(); } 

Pero el nombre de usuario siempre es nulo. Por favor ayuda. Gracias

Escriba a continuación código en lugar de su código para guardar el nombre de usuario en las preferencias compartidas.

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); SharedPreferences.Editor editor = myPrefs.edit(); editor.putString("MEM1", userName); editor.commit(); 

Y use debajo del código para obtener el valor de preferencias.

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); String username = myPrefs.getString("MEM1",""); 

Llamar a getPreferences significa que tienes que estar en la misma actividad. El uso de getSharedPreferences permite compartir las preferencias entre las actividades. Sólo tienes que definir un nombre para las preferencias al llamar a getSharedPreferences("Pref name here", MODE_PRIVATE);

 private final String TAXI_SPREF = "TAXI_SHARED_PREFERENCES"; //set-save data to shared preferences SharedPreferences.Editor sPEditor = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE).edit(); sPEditor.putInt("USERID", etUserID.getText().toString()); sPEditor.putString("EMAIL", etEmail.getText().toString()); sPEditor.apply(); //get data from shared preferences SharedPreferences sharedPreferences = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE); int userID = sharedPreferences.getInt("USERID", 0); string email = sharedPreferences.getString("EMAIL", 0); //////// or ///// String email = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE).getString("EMAIL","EMPTY"); if (!email.equals("EMPTY")){ etEmail.setText(email); } 
  • Cómo guardar un paquete completo en SharedPreferences
  • Guardar SharedPreferences archivos en directorio personalizado o obtener predeterminado SharedPreferences dir
  • Compartido prefrence almacenado valor no funciona con android onCreate ()
  • Android - ¿Cómo usar SharedPreferences en la clase non-Activity?
  • Alcance de SharedPreferences
  • Guardar un arraylist de cadenas a las preferencias compartidas
  • Android-maven-plugin: método de despliegue que no elimina SharedPreferences
  • ¿Se eliminan las preferencias compartidas asociadas con la aplicación cuando se quita la aplicación?
  • El valor SharedPreferences no se actualiza
  • Cuál es la mejor manera de usar las preferencias compartidas entre las actividades
  • Escribir la clave pública / privada en SharedPreferences y usarla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.