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
- SharedPreferences no funciona - getString devuelve siempre el valor predeterminado
- SharedPreferences problemas con la cadena "ISO-8859-1"?
- Perder algunos valores usando getStringSet y putStringSet
- Android: No se puede acceder a SharedPreference de otra aplicación
- Android - Almacenamiento / recuperación de cadenas con preferencias compartidas
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
- Cómo iterar a través de todos los objetos Bundle
- Preferencias compartidas "límite"
- Uso de las preferencias compartidas para un ahorro de alto valor
- La mejor opción para almacenar nombre de usuario y contraseña en la aplicación Android
- ¿Cuál es la diferencia entre las entradas y los valores de entrada en android listPreferences xml?
- La actualización de Android SharedPreferences no funciona
- FindPreference devuelve NULL en el prefit nombre pref
- ¿Cómo usar SharedPreferences como LocalStore, de manera más genérica?
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 puedo filtrar solo imágenes y videos en la galería android?
- Extraño divisor con la barra de acción de soporte de v7