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 la ruta de la imagen utilizando las preferencias compartidas
  • Guardar matrices de cadenas con SharedPreference
  • SharedPreferences: ¿Es una clase o una interfaz?
  • ¿Cuál es la diferencia entre commit () y apply () en Shared Preference
  • Conversión de JSONArray a matriz normal
  • Cómo poner / obtener varios JSONObjects a JSONArray?
  • Cómo analizar ANR en sharedPreferences
  • Cómo hacer que la aplicación vaya a otra página si no se ejecuta por primera vez
  • Guardar matriz de bytes con SharedPreferences
  • SharedPreferences.getBoolean devuelve verdadero cada vez
  • SharedPreferences no guarda valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.