在我的应用中,我存储来自不同片段的整数和字符串数据。 该数据在同一片段中成功检索。 在整个应用程序中成功检索String数据。
但是无法从不同的活动中检索整数数据。然而,在同一片段中它可以。如果我尝试从不同的活动中获取一个整数,它总是给我设置默认值。 这是我的代码。请注意,我已经使用常量来检索数据。
保存号码:
public void saveNumberChange(String s, int data){
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(s, data);
editor.commit();
}
让他们退出:
public int getNumber(String s){
int data;
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);
data = sharedPref.getInt(s, 0);
return data;
}
有趣的是,当我将整数存储为字符串时,它们可以再次在同一个活动中检索,而不是从另一个活动中检索。使用纯字符串一切都很好。
更多代码:
保存整数:
saveNumberChange(BeyouApplicationClass.AGE, valueage);
获取整数:
getNumber(BeyouApplicationClass.AGE);
感谢您的帮助。我希望你能帮助我。
答案 0 :(得分:0)
您无法从其他活动访问它,因为您只使用该活动的上下文将其保存在该活动上。
<强>溶液强>
而不是使用活动的context.getSharedPreferences
,而是使用整个应用程序的PreferenceManager.getDefaultSharedPreferences
在其活动中共享数据
示例:强>
<强> saveNumberChange 强>
public void saveNumberChange(String s, int data){
Context context = getActivity();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(s, data);
editor.commit();
}
<强> getNumber 强>
public int getNumber(String s){
int data;
Context context = getActivity();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
data = sharedPref.getInt(s, 0);
return data;
}
答案 1 :(得分:0)
尝试以这种方式获取您的偏好:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
在所有活动中,并以相同的方式获取编辑器
答案 2 :(得分:0)
所以我发现了以下内容。
对于遇到同样问题的每个人: 从片段内保存共享首选项将导致我之前描述的问题。 只有那个特定的片段才能获得信息。 所以总是通过调用它的主机活动来保存片段。 我做的是这个:
public static void saveNumberChange(String s, int data){
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(s, data);
editor.commit();
}
public static int getNumber(String s){
int data;
String help = "com.example.test2.PREFERENCE_FILE_KEY_"+username;
SharedPreferences sharedPref = context.getSharedPreferences(help, Context.MODE_PRIVATE);
data = sharedPref.getInt(s, 0);
return data;
}
使您的方法保持静态,以便可以从附加的片段中调用它,一切正常。