Java Android SharedReferences传递变量的值

Java Android SharedReferences传递变量的值,java,android,sharedpreferences,android-sharedpreferences,Java,Android,Sharedpreferences,Android Sharedpreferences,如何将变量的值传递给其他类?我使用的是SharedReference,我不知道我是否将正确的值传递给了其他类。这是我的声明 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");

如何将变量的值传递给其他类?我使用的是
SharedReference
,我不知道我是否将正确的值传递给了其他类。这是我的声明

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();
}

SharedReference
基本上是本地存储在应用程序包存储器中的键值对。因此,您可以为应用程序中的
SharedReference
选择一个标记。比如说,您的
SharedReference
标记是
MySharedPreference

因此,如果要在
SharedReference
中存储一个值,您需要这样做

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. 
当您从其他类检索首选项值时,只需执行以下操作

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. 

SharedReference
基本上是本地存储在应用程序包存储器中的键值对。因此,您可以为应用程序中的
SharedReference
选择一个标记。比如说,您的
SharedReference
标记是
MySharedPreference

因此,如果要在
SharedReference
中存储一个值,您需要这样做

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. 
当您从其他类检索首选项值时,只需执行以下操作

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();
也可以使用事件总线库

您可以使用listener将数据从一个类传递到另一个类

CustomListener listener = new CustomListener();
myClass.setOnSumListener(listener);
------
int sum = listener.getSumValue();
也可以使用事件总线库

获取SharedReference时,首选项文件名应相同。对于您的情况,如果sum为非空,则这两个参数是不同的:String.valueOf(sum)和String.valueOf(“”),或者,使用默认的SharedReference的方式如下:SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());但这是一个变量?而不是在其他类中显示?每个SharedReference都将是应用程序数据中的一个文件。所以,当您传递String.valueOf(sum)时,它将创建值sum的文件名。因此,下次如果您想获取存储的数据,您需要访问相同的“总和”首选项文件。在获取SharedReference时,首选项文件名应该相同。对于您的情况,如果sum为非空,则这两个参数是不同的:String.valueOf(sum)和String.valueOf(“”),或者,使用默认的SharedReference的方式如下:SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());但这是一个变量?而不是在其他类中显示?每个SharedReference都将是应用程序数据中的一个文件。所以,当您传递String.valueOf(sum)时,它将创建值sum的文件名。所以,下一次如果您想获取存储的数据,您需要访问相同的“sum”首选项文件,很高兴知道这有帮助!很高兴知道这有帮助!