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
- Android: haz algo en actividad cuando cambian las preferencias
- Android: guardar el estado de la aplicación
- ¿Por qué preferences.getString ("key", "DEFAULT") devuelve siempre "DEFAULT"?
- ¿Cómo uso las preferencias de los fragmentos con ViewPager?
- ¿Qué técnica de almacenamiento de datos Android utilizar?
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 pasar el contexto de la aplicación dentro Singleton y SharedPreferences Clases
- ¿Dónde se almacenan las preferencias compartidas?
- Contexto de la aplicación SharedPreferences vs contexto de la actividad
- ¿Cómo leer las SharedPreferences de otra aplicación (el mismo ID de usuario)?
- Eliminación de preferencias compartidas
- Uso de SharedPreferences con diferentes contextos
- Guardar el valor del elemento seleccionado mediante la preferencia compartida
- Loader onLoadFinished () no se llama
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