Cerrar sesión cerrar SharedPreferences

Tengo una página de inicio de sesión que guarda el nombre de usuario y la contraseña en Preferencias compartidas. Tengo otra clase de actividad que incluye el botón de cierre de sesión. Quiero borrar las preferencias compartidas cuando haga clic en el botón de cierre de sesión. El problema es que no consigo las SharedPreferences de esta clase. ¿Cómo puedo obtener SharedPreferences?

Página de inicio de sesión

public class MainActivity extends Activity { public SharedPreferences.Editor loginPrefsEditor; public SharedPreferences loginPreferences; private Boolean saveLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); name = (EditText) findViewById(R.id.et_Username); pass = (EditText) findViewById(R.id.et_Password); login = (Button) findViewById(R.id.bt_Login); loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE); loginPrefsEditor = loginPreferences.edit(); saveLogin = loginPreferences.getBoolean("saveLogin", false); if (saveLogin == true) { name.setText(loginPreferences.getString("username", "")); pass.setText(loginPreferences.getString("password", "")); } login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { name1 = name.getText().toString(); pass1 = pass.getText().toString(); //new Thread (new Task()).start(); loginPrefsEditor.putBoolean("saveLogin", true); loginPrefsEditor.putString("username", name1); loginPrefsEditor.putString("password", pass1); loginPrefsEditor.commit(); new myAsyncTask().execute(); } }); } 

Botón de cierre de sesión en AnotherActivity

  logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Launching News Feed Screen Intent i = new Intent(getApplicationContext(), MainActivity.class); startActivity(i); } }); 

Prueba esto !

 logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Launching News Feed Screen SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit(); finish(); }); 

¿Por qué no escribir una clase de utilidad SharedPreference? Esto se puede acceder desde ambas actividades.

Creo que tienes problemas para entender las preferencias compartidas en android.

Según documentación oficial

Para obtener un objeto SharedPreferences para su aplicación, utilice uno de los dos métodos siguientes:

GetSharedPreferences (): utilice esto si necesita varios archivos de preferencias identificados por nombre, que especifica con el primer parámetro.

GetPreferences (): utilice esta opción si sólo necesita un archivo de preferencias para su actividad. Debido a que este será el único archivo de preferencias para su actividad, no proporcionará un nombre.

Debe tener un Contexto para usar los dos métodos anteriores.

También las preferencias compartidas se almacenan como un par de valores clave, por lo que el borrado debe significar que se establecen los valores en una cadena vacía.

Para obtener más detalles, y una mejor explicación puede leer aquí http://developer.android.com/guide/topics/data/data-storage.html#pref y http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article .html

Espero que esto ayude.

¡Aclamaciones!

Es tan simple. Como si guardara sus datos en SharedPrefernce

 SharedPreferences sp = getSharedPreferences("MYKEY",0); SharedPreferences.Editor editor = sp.edit(); editor.putString("username" , username); editor.putString("password" , password); 

Ahora puedes recuperar como en cualquier clase de tu aplicación como,

 SharedPreferences sp = getSharedPreferences("MYKEY",0); String uname = sp.getString("username"); String pwd = sp.getString("password"); 

Y para borrar su nombre de usuario y contraseña

 editor.clear(); editor.commit(); 

o

 editor.remove("username"); editor.remove("password"); editor.commit(); 
 SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = mPrefs.edit(); editor.clear(); editor.commit(); 
  • Recuperación de valores de prefrences compartidos en otra actividad
  • Arquitectura de la aplicación de Android: RxJava
  • Preferencias independientes para cada vista en una aplicación para Android
  • ¿Está bien para guardar una matriz JSON en SharedPreferences?
  • SharedPreferences no se guardará / cargará en PreferenciaActividad
  • No se puede acceder a las preferencias creadas por PreferenceActivity
  • Alternativa a addPreferencesFromResource ya que está obsoleta
  • Activa / desactiva Toast desde las preferencias compartidas?
  • ¿Copiar / compartir configuraciones entre versiones pagadas / gratuitas de la aplicación para Android?
  • Botón Inicio de la barra de acciones no funcional con PreferredScreen anidado
  • Android: Mantenga el nombre de usuario en sesión hasta que se cierre la sesión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.