Как я могу запускать коды один раз в день для фрагмента в android? - PullRequest
0 голосов
/ 22 марта 2020

Я нашел это видео (https://www.youtube.com/watch?v=MZjIhaMKnlo) и скопировал (почти) точный код для назначения пользователям некоторых задач один раз в день следующим образом:

        Calendar calendar = Calendar.getInstance();
        int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
        SharedPreferences settings = this.getActivity().getSharedPreferences("PREFS", 0);
        int lastDay = settings.getInt("day",0);

        if (lastDay != currentDay) {
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("day", currentDay);
            editor.commit();

            str1 = "oic_" + random.nextInt(76);

            int id1 = getResources().getIdentifier("com.codepath.wmgf8:drawable/" + str1, null, null);

            daily_goal1.setBackgroundResource(id1);
        }

Единственная разница что я поставил this.getActivity().getSharedPreferences вместо getSharedPreferences, потому что я использую Fragment.

Тем не менее, он назначает случайные изображения каждый раз, когда я открываю приложение.

Может кто-нибудь помочь мне разобраться?

Редактировать

Я обнаружил, что действия не могут быть выполнены во Фрагменте ...

Кажется, единственный способ сделать это - полностью создать новую деятельность.

Пожалуйста, дайте мне знать, если есть другой вариант!

1 Ответ

1 голос
/ 22 марта 2020

Я решил проблему следующим образом:


Calendar calendar = Calendar.getInstance();
        int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
        int currentWeek = calendar.get(Calendar.WEEK_OF_MONTH);
        SharedPreferences settings = getSharedPreferences("PREFS", 0);
        int lastDay = settings.getInt("day",0);
        int lastWeek = settings.getInt("week", 0);

        if (lastDay != currentDay) {
            SharedPreferences.Editor editor = settings.edit();
            editor.putInt("day", currentDay);

            //random
            Random random = new Random();

            //item of the day
            String str0 = IOD();

            //commit to system
            editor.putString("IOD", str0);

            //daily_goals
            String[] str = new String[8];
            str = daily_goal();

            editor.putString("daily_goal1", str[0]);
            editor.putString("daily_goal2", str[1]);
            editor.putString("daily_goal3", str[2]);
            editor.putString("daily_goal4", str[3]);
            editor.putString("daily_goal1_text", str[4]);
            editor.putString("daily_goal2_text", str[5]);
            editor.putString("daily_goal3_text", str[6]);
            editor.putString("daily_goal4_text", str[7]);

            //commit
            editor.commit();
        }
...