Я установил значение sharedpreference во фрагменте. Но когда я пытаюсь получить доступ к этому значению в основной деятельности, я всегда получаю значение по умолчанию (пожалуйста, скажите мне, почему...
Во фрагменте:
reader= this.getActivity().getSharedPreferences("pref",0); // this is in onCreate
//this part within a onClick
editor = reader.edit();
editor.putBoolean(Preferences.passwordOn, true);
editor.putString(Preferences.password, editTextPassword.getText().toString());
editor.commit();
В основной деятельности:
boolean passwordOn = reader.getBoolean(Preferences.passwordOn, false);
if(passwordOn)
{
Intent loginIntent=new Intent("com.sdg.etspandroidtracker.LOGIN");
startActivity(loginIntent);
}
ОБНОВЛЕНИЕ: мой код слишком грязный и огромный. :( Так что я расскажу, что там происходит.
В основной деятельности сначала я проверяю, установлен ли пароль для приложения. Если это так, я показываю экран входа в систему и завершаю основное действие, как указано выше во второй части кода. В противном случае я просто сохраняю основную деятельность.
В настройках у меня есть включение/выключение пароля. Когда я на переключателе, отображается фрагмент, где вы можете ввести новый пароль и подтверждение пароля. Если все данные верны, пароль и статус пароля (информация, если пароль установлен) сохраняются в общих настройках. Этот код является первой частью кода, которую я привел выше.
Я могу успешно запустить приложение с паролем и установить его. Но когда я снова запускаю приложение, экран входа в систему не отображается. Я отладил и обнаружил, что это связано с тем, что sharedpreference пуст и дает значение по умолчанию «false», хотя я установил пароль в последний раз, когда запускал приложение. Кажется, я не могу получить доступ к общим настройкам, которые я установил во фрагменте, в основном действии? :\