Совместное использование от активности к фрагменту - PullRequest
0 голосов
/ 09 ноября 2019

Мое приложение имеет mainacctivity. Пользователь должен установить пароль, и он будет сохранен в общем префиксе, как это.

settings = getSharedPreferences("NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("password", edpassstr);
editor.apply(); 

Я могу получить это предпочтение в другом действии, но не могу получить его во фрагменте. Этокод, используемый для восстановления значения из общего предпочтения

settings = getActivity().getSharedPreferences("NAME", 0);
String  passs = settings.getString("password", "");

Строка passs is = "" внутри фрагмента. Почему? Как получить строку из общего предпочтения во фрагменте?

Ответы [ 3 ]

0 голосов
/ 09 ноября 2019

Объявить как глобальную переменную

SharedPreferences prefs;

SharedPreferences.Editor editor;

в методе onCreate () объявить как

prefs = getSharedPreferences("data", MODE_PRIVATE);
editor = getSharedPreferences("data", MODE_PRIVATE).edit();

editor.putString("password", "xyz_password");
editor.apply();

Вы можете получить значение из общего предпочтения, используя этот способ

prefs.getString(key,default Value);
prefs.getString("password", "Any value if you not get any value");

Это так просто, я надеюсь, что это полезно для тебя ...!

0 голосов
/ 09 ноября 2019

Если вы хотите использовать общие настройки в приложении. Вы должны использовать applicationcontext вместо контекста владельцев жизненного цикла (действия или фрагменты).

applicationcontext.getSharedPreferences(name, mode)
0 голосов
/ 09 ноября 2019

где вы вызываете getActivity () в вашем фрагменте? Потому что он вернет null, когда его вызовут перед методом onAttach фрагмента. В своем фрагменте попробуйте переопределить метод onAttach, поскольку он получает контекст в качестве параметра, например так:

@Override
public void onAttach(@NonNull Context context) {
    super.onAttach(context);
    SharedPreferences settings = context.getSharedPreferences("NAME", 0);
}
...