我有四个Activities
:MainActivity
,HomeActivity
,SecondActivity
,ThirdActivity
。
我正在使用MainActivity
作为欢迎屏幕,我的应用程序从HomeActivity开始。我在SharedPreferences
中定义了HomeActivity
:
外部OnCreate
方法:
SharedPreferences settings;
SharedPreferences.Editor editor;
在OnCreate
内:
settings = getSharedPreferences("app_settings", Context.MODE_APPEND);
editor = settings.edit();
我的问题是我的SharedPreferences
仅适用于HomeActivity
。
我也想在sharedPreferences
中拨打SecondActivity
。
我该怎么办?
答案 0 :(得分:3)
您可以像这样使用SharedPreferences实现单例
public class SPManager {
private static final String TAG = SPManager.class.getName();
private static SPManager instance;
private Context mContext;
private SharedPreferences mPrefs;
private static final String PREF_NAME = "com.package.app";
private static final String KEY_NAME = "user_name";
public static SPManager getInstance(Context context) {
if (instance == null) {
instance = new SPManager(context);
}
return instance;
}
private SPManager(Context context) {
mContext = context;
mPrefs = mContext.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}
// Example
public void addName(String name) {
mPrefs.edit().putString(KEY_NAME, name).apply();
}
public String getName() {
return mPrefs.getString(KEY_NAME, "John Doe");
}
}
你也可以像这样使用这个单身:SPManager.getInstance(context).getName();
使用起来很简单并且更新它。
希望能帮到你。
答案 1 :(得分:2)
请创建一个类,如Datastorage
Datastorage.WritePreference("id",idvalue, getApplicationContext());
在您的应用程序内部的每个位置使用此类之后,
在我的login.java类中,我将id存储在共享偏好中,如
String id = (String) Datastorage.ReadFromPreference("id",Datastorage.STRING_KEY,getApplicationContext());
在home.java之后我读了这个id值,
{{1}}
答案 2 :(得分:1)
创建一个名为BaseActivity的扩展类
class BaseActivity{
SharedPreferences settings;
SharedPreferences.Editor editor;
onCreate(){
settings = getSharedPreferences("app_settings", Context.MODE_APPEND);
editor = settings.edit();
}
}
然后,在任何活动中只需扩展它.. ex:SecondActivity扩展BaseActivity
class SecondActivity extends BaseActivity{
onCreate(){
editor.putString("","").apply();
}
}
class FirstActivity extends BaseActivity{
onCreate(){
editor.putString("","").apply();
}
}
.....
答案 3 :(得分:1)
只需在您想要共享偏好值
的任何地方调用此自定义方法即可public void retrivePreference() {
SharedPreferences settings = getSharedPreferences("app_settings", Context.MODE_APPEND);
String value1 = setting.getString("key1", null);
String value2 = setting.getString("key2", null);
}