Выход из системы clear SharedPreferences

У меня есть страница входа, которая сохраняет имя пользователя и пароль для общих настроек. У меня есть другой класс Activity, который включает кнопку выхода. Я хочу очистить Shared Preferences при нажатии кнопки выхода. Проблема в том, что я не получаю SharedPreferences этого класса. Как я могу получить SharedPreferences?

Страница авторизации

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(); } }); } 

Кнопка выхода из аккаунта 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); } }); 

    Попробуй это !

     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(); }); 

    Почему бы не написать служебный класс SharedPreference. Доступ к этим ресурсам можно получить из обоих видов деятельности.

    Я думаю, что у вас есть проблемы с пониманием общих предпочтений в Android.

    Согласно официальной документации

    Чтобы получить объект SharedPreferences для вашего приложения, используйте один из двух способов:

    GetSharedPreferences () – используйте это, если вам нужны несколько файлов настроек, идентифицированных по имени, которые вы указываете с помощью первого параметра.

    GetPreferences () – Используйте это, если вам нужен только один файл настроек для вашей деятельности. Поскольку это будет единственный файл настроек вашей активности, вы не укажете имя.

    У вас должен быть контекст для использования обоих вышеуказанных методов.

    Также общие предпочтения сохраняются как пара значений ключа, поэтому очистка должна означать, что вы устанавливаете значения в какую-то пустую строку.

    Для более подробной информации и лучшего объяснения вы можете прочитать здесь http://developer.android.com/guide/topics/data/data-storage.html#pref и http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article .html

    Надеюсь, это поможет.

    Ура!

    Это просто. Как вы сохраняете свои данные в SharedPrefernce

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

    Теперь вы можете получить как в любом классе вашего приложения,

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

    И для очистки вашего имени пользователя и пароля

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

    или

     editor.remove("username"); editor.remove("password"); editor.commit(); 
     SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = mPrefs.edit(); editor.clear(); editor.commit();