Использование SharedPrefernces для суммирования целых чисел из RecyclerView - PullRequest
3 голосов
/ 03 июля 2019

Я пытаюсь создать приложение, которое суммирует время.Моя ситуация: у меня есть RecyclerView с большим количеством элементов, и у каждого из них есть свой атрибут time.

Теперь, когда щелкает элемент, другой, другой, я хочу, чтобы все эти атрибуты былисуммируется и конечный результат будет отображаться в другой деятельности.Поэтому я пытаюсь добиться этого с помощью SharedPrefernces следующим образом:

private void getTime(int time) {
        SharedPreferences sharedPreferences = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        int time0 = sharedPreferences.getInt("TimeRetrieve", 0);

        int sum = time0 + time;




        SharedPreferences sharedPreferences2 = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences2.edit();
        editor.putInt("Time", sum);

        editor.apply();

TimeRetrieve получает общее время, отображаемое в TextView, поэтому, если это первый раз, когда он по умолчанию равен 0, конечно.После этого предполагается, что полученное значение int суммируется с int элемента, который был только что нажат и затем сохранен в другом SharedPref: Time.

Time, отправляется в TextView, где он извлекаетсяTimeRetrieve

Но его не работает ..

Ответы [ 2 ]

2 голосов
/ 03 июля 2019

Во-первых, вы используете 2 разные клавиши: TimeRetrieve и Time.Таким образом, вы не можете сделать сумму.Во-вторых, почему вы используете объект 2 SharedPreferences?Нужен только один.В-третьих, вам не нужно использовать SharedPreferences здесь.Вам просто нужно сложить то, что вы хотите в переменной, а затем передать ее другому действию с дополнительным пакетом.

2 голосов
/ 03 июля 2019

Есть ли причина, по которой вы используете два разных SharedPreferences для получения и размещения данных? Попробуйте использовать что-то вроде этого:

private void GetTime(int time) {
        SharedPreferences sharedPreferences = mContext.getDefaultSharedPreferences("sharedPrefs", MODE_PRIVATE);
        int time0 = sharedPreferences.getInt("TimeRetrieve", 0);

        int sum = time0 + time;





        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("TimeRetrieve", sum);

        editor.apply();

Обратите внимание на звонок на getDefaultSharedPreferences. По умолчанию будет получен файл com.companyname.package.yourapplication SharedPreferences, и вам следует использовать только этот файл, если вы хотите установить и извлечь из него данные. Есть и другие причины, по которым вы бы создали несколько файлов SharedPreferences, но я не думаю, что это то, что вы пытаетесь сделать. Вы также используете две разные клавиши, что, безусловно, является частью проблемы. Я изменил их в приведенном выше коде, чтобы они совпадали, и вы оба раза ссылаетесь на один и тот же ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...