невозможно очистить мои sharedPreferences с помощью editor.clear (). commit (); - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю над проектом android, где у меня есть сценарий, такой как:

Я использовал сборщик мест. И данные, которые дал сборщик мест, отправляются в различные действия с использованием общих предпочтений. И показывают эти данные в TextView.

, но проблема заключается в том, что я закрыл действие и снова открыл это действие; мои данные все еще видны в TextView.

даже когда я очистил его в onDestroy ().

вот мой код для отправки данных:

 SharedPreferences settings = getSharedPreferences("address", Context.MODE_PRIVATE);
 SharedPreferences.Editor editor = settings.edit();
 editor.putString("address", (String) Address);
 editor.commit();
 finish();

здесь мой код для установки и очистки данных:

 @Override
protected void onResume() {

    super.onResume();
    SharedPreferences settings = getSharedPreferences("address", Context.MODE_PRIVATE);
    String n = settings.getString("name", "");
    String a = settings.getString("address", "");
    name.setText(n);
    location.setText(a);
}

@Override
protected void onDestroy() {

    SharedPreferences settings = getSharedPreferences("address", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.remove("address");
    editor.clear().commit();
    super.onDestroy();
}

вот мой класс менеджера предпочтений:

   public class PrefManager {

    SharedPreferences pref;
    SharedPreferences.Editor editor;
    Context _context;

    // shared pref mode
    int PRIVATE_MODE = 0;

    // Shared preferences file name
    private static final String PREF_NAME = "sara";

    private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";

    public PrefManager(Context context) {
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void setFirstTimeLaunch(boolean isFirstTime) {
        editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);
        editor.clear().commit();
    }

    public boolean isFirstTimeLaunch() {
        return pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);
    }
}

И, пожалуйста, не пометьте этот вопрос как дубликат, потому что я вижу все связанные вопросы и вижу ответы. Я перепробовал все возможные решения, но у меня ничего не получалось. Я новичок в android, поэтому, пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Попробуйте проверить журналы, чтобы убедиться, что вы действительно работаете с 'onDestory'.

@Override
protected void onDestroy() {
    Log.d("address", "onDestory");

    SharedPreferences settings = getSharedPreferences("address", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.remove("address");
    editor.clear().commit();
    super.onDestroy();
}

Нет проблем с кодом для создания и удаления SharedPreferences.

0 голосов
/ 20 февраля 2020

Я не уверен, где вы используете SharedPreference объект для установки данных в нем. Но я думаю, что это проблема:

  1. В этом упражнении вы корректно очищаете SharedPreferenece.

  2. Вы go назад к предыдущий Activity. И предыдущее действие устанавливает данные для общего предпочтения, снова . Поэтому SharedPreference больше не является пустым.

  3. Вы go для второго действия (которое удаляет данные общих предпочтений в onDestroy()). Поскольку общие предпочтения не пусты, вы снова видите данные.

Так что проверьте код еще раз и не стесняйтесь задавать любые вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...