Сохранение даты в 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 ();

        }


    };
}





Ответы (0 шт):