Сохранение даты в SharedPreferences
Здравствуйте что то запутался не получается сохранить и загрузить даты. DatePickerDialog выводится даты меняются но дальше тупик. В идеале хотелось бы все данные сохранять отдельным списком. То есть при выборе основной даты меняются все, и можно было бы их сохранить и загрузить потом. Дата 1, дата 2 и т.д. Спасибо заранее, учусь делаю ошибки не судите строго.
import android.app.DatePickerDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class ftab3 extends Fragment implements View.OnClickListener{
Calendar dateAndTime = Calendar.getInstance ();
private SharedPreferences sharedPrefskyr;
private TextView Startink2;
private TextView Period21;
private TextView Period11;
private TextView Period31;
private TextView Vilup1;
private TextView data1perkalen;
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";
public static final String nameper4kyr = "nameKey6kyr";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// private TextView currentDateTime;
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_ftab3, container, false);
data1perkalen = (TextView) view.findViewById(R.id.data1perkalen);
long dateN = System.currentTimeMillis();
SimpleDateFormat sdN = new SimpleDateFormat ("dd MMM yyyy");
String dateNN = sdN.format(dateN);
data1perkalen.setText(dateNN);
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");
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");
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");
String dateS = rdf.format(date6);
Vilup1.setText(dateS);
// при старте проверяем есть ли в файлах настроек
// данные по ключу nameKey
sharedPrefskyr = getActivity ().getSharedPreferences(myPrefskyr, 0);
if (sharedPrefskyr.contains(namevilupkyr)) {
// если есть, то ставим значение этого ключа в EditText
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);
}
if (sharedPrefskyr.contains(nameper4kyr)) {
data1perkalen.setText(dateNN);
}
Button button1 = (Button) view.findViewById(R.id.saveBtn22);
Button button2 = (Button) view.findViewById(R.id.getBtn22);
Button button3 = (Button) view.findViewById(R.id.resumeku22);
Button button4 = (Button) view.findViewById(R.id.setDatekal);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
return view;
}
// метод для сохранения текста в файл настроек
public void getAndSave() {
// получаем текст
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();
String editTextValue6 = data1perkalen.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.putString(nameper4kyr, editTextValue6);
editor.commit ();
}
// метод для получения текста из SharedPreferences по ключу
public void getText() {
sharedPrefskyr = getActivity ().getSharedPreferences(myPrefskyr, 0);
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, ""));
}
if (sharedPrefskyr.contains(nameper4kyr)) {
data1perkalen.setText(sharedPrefskyr.getString(nameper4kyr, ""));
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.saveBtn22:
getAndSave ();
Toast.makeText(getActivity (), "Сохранить дату", Toast.LENGTH_LONG).show();
break;
case R.id.getBtn22:
// получаем текст из SharedPreferences
Toast.makeText(getActivity (), "Сохраненная дата", Toast.LENGTH_LONG).show();
getText();
break;
case R.id.resumeku22:
FragmentTransaction ftr = getFragmentManager().beginTransaction();
ftr.detach(ftab3.this).attach(ftab3.this).commit();
// onResume();
Toast.makeText(getActivity (), "Текущая дата", Toast.LENGTH_LONG).show();
break;
// отображаем диалоговое окно для выбора даты
case R.id.setDatekal:
new DatePickerDialog (getActivity (), d,
dateAndTime.get (Calendar.YEAR),
dateAndTime.get (Calendar.MONTH),
dateAndTime.get (Calendar.DAY_OF_MONTH))
.show ();
break;
}
}
// установка начальных даты и времени
private void setInitialDateTime() {
// currentDateTime.setText(DateUtils.formatDateTime(this,
// dateAndTime.getTimeInMillis()+ (8 * 86400000),
// DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
data1perkalen.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis (),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
Startink2.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis (),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
Period11.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis () + (8 * 86400000),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
Period21.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis () + (15 * 86400000),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
Period31.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis () + (19 * 86400000),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
Vilup1.setText (DateUtils.formatDateTime (getActivity (),
dateAndTime.getTimeInMillis () + (21 * 86400000),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
}
// установка обработчика выбора даты
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener () {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateAndTime.set (Calendar.YEAR, year);
dateAndTime.set (Calendar.MONTH, monthOfYear);
dateAndTime.set (Calendar.DAY_OF_MONTH, dayOfMonth);
setInitialDateTime ();
}
};
}