не сохраняет SharedPreferences в fragment
Подскажите пожалуйста в чем моя ошибка. В Activity работает но в fragment не сохраняет в SharedPreferences
public class ftab3 extends Fragment implements View.OnClickListener{
private SharedPreferences sharedPrefskyr;
private TextView Startink2;
private TextView Period21;
private TextView Period11;
private TextView Period31;
private TextView Vilup1;
public static final String myPrefskyr = "myprefskyr";
public static final String namevilupkyr = "nameKey1kyr";
public static final String namestartkyr = "nameKey2kyr";
public static final String nameper1kyr = "nameKey3kur";
public static final String nameper2kyr = "nameKey4kyr";
public static final String nameper3kyr = "nameKey5kyr";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_ftab3, container, false);
Startink2 = (TextView) view.findViewById(R.id.data1per1);
long date1 = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat ("dd MMM yyyy");
String dateV = sdf.format(date1);
Startink2.setText(dateV);
Period11 = (TextView) view.findViewById(R.id.data2per1);
long date2 = System.currentTimeMillis()+ (8 * 86400000);
SimpleDateFormat p = new SimpleDateFormat ("dd MMM yyyy");
String dateX = p.format(date2);
Period11.setText(dateX);
Period21 = (TextView) view.findViewById(R.id.data3per1);
long date3 = System.currentTimeMillis()+ (15 * 86400000);
SimpleDateFormat N = new SimpleDateFormat ("dd MMM yyyy, HH:mm");
String dateY = N.format(date3);
Period21.setText(dateY);
Period31 = (TextView) view.findViewById(R.id.data4per1);
long date4 = System.currentTimeMillis()+ (19 * 86400000);
SimpleDateFormat Nc = new SimpleDateFormat ("dd MMM yyyy, HH:mm");
String dateJ = Nc.format(date4);
Period31.setText(dateJ);
Vilup1 = (TextView) view.findViewById(R.id.data5per1);
long date6 = System.currentTimeMillis()+ (21 * 86400000);
SimpleDateFormat rdf = new SimpleDateFormat ("dd MMM yyyy, HH:mm");
String dateS = rdf.format(date6);
Vilup1.setText(dateS);
sharedPrefskyr = getActivity ().getSharedPreferences(myPrefskyr, Context.MODE_PRIVATE);
if (sharedPrefskyr.contains(namevilupkyr)) {
Vilup1.setText(dateS);
}
if (sharedPrefskyr.contains(namestartkyr)) {
Startink2.setText(dateV);
}
if (sharedPrefskyr.contains(nameper1kyr)) {
Period11.setText(dateX);
}
if (sharedPrefskyr.contains(nameper2kyr)) {
Period21.setText(dateY);
}
if (sharedPrefskyr.contains(nameper3kyr)) {
Period31.setText(dateJ);
}
return view;
}
public void saveText() {
String editTextValue = Vilup1.getText().toString();
String editTextValue2 = Startink2.getText().toString();
String editTextValue3 = Period11.getText().toString();
String editTextValue4 = Period21.getText().toString();
String editTextValue5 = Period31.getText().toString();
SharedPreferences.Editor editor = sharedPrefskyr.edit();
editor.putString(namevilupkyr, editTextValue);
editor.putString(namestartkyr, editTextValue2);
editor.putString(nameper1kyr, editTextValue3);
editor.putString(nameper2kyr, editTextValue4);
editor.putString(nameper3kyr, editTextValue5);
editor.apply();
}
public void getText() {
sharedPrefskyr = getActivity ().getSharedPreferences(myPrefskyr, Context.MODE_PRIVATE);
if (sharedPrefskyr.contains(namevilupkyr)) {
Vilup1.setText(sharedPrefskyr.getString(namevilupkyr, ""));
}
if (sharedPrefskyr.contains(namestartkyr)) {
Startink2.setText(sharedPrefskyr.getString(namestartkyr, ""));
}
if (sharedPrefskyr.contains(nameper1kyr)) {
Period11.setText(sharedPrefskyr.getString(nameper1kyr, ""));
}
if (sharedPrefskyr.contains(nameper2kyr)) {
Period21.setText(sharedPrefskyr.getString(nameper2kyr, ""));
}
if (sharedPrefskyr.contains(nameper3kyr)) {
Period31.setText(sharedPrefskyr.getString(nameper3kyr, ""));
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.saveBtn22:
saveText();
Toast.makeText(getActivity (), "Сохранить", Toast.LENGTH_LONG).show();
break;
case R.id.getBtn22:
Toast.makeText(getActivity (), "Получить", Toast.LENGTH_LONG).show();
getText();
break;
}
}
Ответы (2 шт):
Автор решения: Arty Morris
→ Ссылка
Может кому-то покажется смешным моя реализация, но работу с SharedPreferences я у себя реализовал так:
static int, static boolean и т.д.
при создании Activity делаю чтение настроек:
mSettings = context.getSharedPreferences(APP_PREFERENCES, MODE_PRIVATE);читаю настройки
_koef_alt_2_main = _read_new_sett_boolean("_koef_alt_2_main", false); _volume_main_tank = _read_new_sett_float("_volume_main_tank", 55); _type_fuel_alt = _read_new_sett_string("_type_fuel_alt", "Пропан");Делаю дополнительные функции чтения / записи данных
public static String _read_new_sett_string(String _label, String _def) { if (mSettings.contains(_label)) { return mSettings.getString(_label, _def); } else { return _def; } } public static float _read_new_sett_float(String _label, float _def) { if (mSettings.contains(_label)) { return mSettings.getFloat(_label, _def); } else { return _def; } } public static Boolean _read_new_sett_boolean(String _label, Boolean _def) { if (mSettings.contains(_label)) { return mSettings.getBoolean(_label, _def); } else { return _def; } } public static void _save_new_sett_string(String _label, String _input) { SharedPreferences.Editor editor = mSettings.edit(); editor.putString(_label, _input); editor.apply(); } public static void _save_new_sett_float(String _label, float _input) { SharedPreferences.Editor editor = mSettings.edit(); editor.putFloat(_label, _input); editor.apply(); } public static void _save_new_sett_boolean(String _label, Boolean _input) { SharedPreferences.Editor editor = mSettings.edit(); editor.putBoolean(_label, _input); editor.apply(); }В программе работаю с переменными, в любом месте. Если мне нужно изменить переменную и записать её, вызываю функцию
_save_new_sett_boolean("restart_on_lost", _restart_on_lost.isChecked());
Все примеры это вырезки из кода, между собой не связаны переменными
Автор решения: Bayram Komekov
→ Ссылка
Создай отдельный Java Class и пропиши анологично этого:
import android.content.Context;
import android.content.SharedPreferences;
import static android.content.Context.MODE_PRIVATE;
public class SharedPref {
public static final String APP_PREFERENCES = "mysettings";
public static final String NIGHT_MODE = "NightMode";
public static final String APP_PREFERENCES_COUNTER = "counter";
SharedPreferences mySharedPref ;
public SharedPref(Context context) {
mySharedPref = context.getSharedPreferences(APP_PREFERENCES, MODE_PRIVATE);
}
// this method will save the nightMode State : True or False
public void setNightModeState(Boolean value) {
SharedPreferences.Editor editor = mySharedPref.edit();
editor.putBoolean(NIGHT_MODE,value);
editor.apply();
}
// this method will load the Night Mode State
public Boolean loadNightModeState (){
return mySharedPref.getBoolean(NIGHT_MODE,false);
}
public void setLanguageState(String lang){
SharedPreferences.Editor editor = mySharedPref.edit();
editor.putString("My_Lang", lang);
editor.apply();
}
// Вызов метода с помошью SharedPreferences
public String getString(String my_lang, String s) {
return mySharedPref.getString("My_Lang","");
}
}
И потом начинай присваевать куда тебе надо.