Android Sharedpreferences передает значение переменной

Как я могу передать значение переменной в другой класс? я использую SharedPreference и я не знаю, передаю ли я правильное значение другому классу. Вот мое заявление.

if (arr != null) {
    int sum = 0;
    for(int i = 0;i<arr.length();i++) {
        listdata.add(arr.get(i).toString());
        String money = arr.getJSONObject(i).getString("amount");
        sum += Integer.parseInt(money);
    }

    SharedPreferences sharedPref1 = getActivity().getSharedPreferences(String.valueOf(sum), Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref1.edit();
    editor.putInt(String.valueOf(sum), sum);
    editor.commit();
}

Вот как я получаю SharedPreference в другом классе. Это правильно?

 SharedPreferences sharedpref1 = getContext().getSharedPreferences(String.valueOf(""), MODE_PRIVATE);
 int budgeted = sharedpref1.getInt(String.valueOf(""), Integer.parseInt(""));

2 ответа

Решение

SharedPreference в основном пара ключ-значение, хранящаяся локально в хранилище пакета приложения. Таким образом, вы можете выбрать тег для вашего SharedPreference в вашем приложении. Допустим, ваш SharedPreference тег MySharedPreference,

Так что в случае сохранения значения в вашем SharedPreference тебе нужно сделать это.

SharedPreferences sharedPref1 = getActivity().getSharedPreferences("MySharedPreference", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref1.edit();
editor.putInt("TotalSum", sum);  // Pick a key here. 
editor.commit();

И когда вы получаете значение предпочтения из какого-то другого класса, просто сделайте это.

SharedPreferences sharedpref1 = getContext().getSharedPreferences("MySharedPreference", MODE_PRIVATE);
int budgeted = sharedpref1.getInt("TotalSum", 0); // Use the same key you used before to retrieve the data. 

Вы можете использовать слушатель для передачи данных из одного класса в другой

CustomListener listener = new CustomListener();
myClass.setOnSumListener(listener);
------
int sum = listener.getSumValue();

или вы можете использовать шину событий lib https://github.com/greenrobot/EventBus

Другие вопросы по тегам