Java SharedReferences在重复的Android Studio项目中不起作用
我创建了一个示例应用程序,其中使用了如下共享首选项:Java SharedReferences在重复的Android Studio项目中不起作用,java,android,android-studio,sharedpreferences,Java,Android,Android Studio,Sharedpreferences,我创建了一个示例应用程序,其中使用了如下共享首选项: SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("data", "This is my data...&q
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("data", "This is my data...");
editor.apply();
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
String base_data = sharedPref.getString("data", "");
然后像这样读取数据:
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("data", "This is my data...");
editor.apply();
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
String base_data = sharedPref.getString("data", "");
这段代码在示例应用程序中起作用,但当我将示例应用程序项目文件复制并粘贴到android studio中的另一个项目时,SharedReferences似乎不起作用。我什么都试过了,但都没用。请别让我发疯
在“复制”项目中,base\u数据变量只返回默认值(“”)。您需要提供一个名称来标识首选项文件
private static final Object MY_PREFS_NAME = "MY_PREFS";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putString("data","This is my data...");
editor.apply();
从首选项获取数据:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String data = prefs.getString("data", "No data");
或者试试这门课
public class PrefManager {
SharedPreferences pref;
SharedPreferences.Editor editor;
Context _context;
// shared pref mode
int PRIVATE_MODE = 0;
// Shared preferences file name
private static final String PREF_NAME = "your_app_name";
private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
public PrefManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void setBoolean(String PREF_NAME,Boolean val) {
editor.putBoolean(PREF_NAME, val);
editor.commit();
}
public void setString(String PREF_NAME,String VAL) {
editor.putString(PREF_NAME, VAL);
editor.commit();
}
public void setInt(String PREF_NAME,int VAL) {
editor.putInt(PREF_NAME, VAL);
editor.commit();
}
public boolean getBoolean(String PREF_NAME) {
return pref.getBoolean(PREF_NAME,true);
}
public void remove(String PREF_NAME){
if(pref.contains(PREF_NAME)){
editor.remove(PREF_NAME);
editor.commit();
}
}
public String getString(String PREF_NAME) {
if(pref.contains(PREF_NAME)){
return pref.getString(PREF_NAME,null);
}
return "";
}
public int getInt(String key) {
return pref.getInt(key,0);
}
}
然后
//=======保存数据的代码===================
SharedPreferences sp = getApplicationContext.getSharedPreferences(PREFS_GAME ,Context.MODE_PRIVATE);
sp.edit().putString(GAME_SCORE,"100").commit();
SharedPreferences sp = getApplicationContext.getSharedPreferences(PREFS_GAME ,Context.MODE_PRIVATE);
String sc = sp.getString(GAME_SCORE,"");
//=======获取保存/检索数据的代码==============
SharedPreferences sp = getApplicationContext.getSharedPreferences(PREFS_GAME ,Context.MODE_PRIVATE);
sp.edit().putString(GAME_SCORE,"100").commit();
SharedPreferences sp = getApplicationContext.getSharedPreferences(PREFS_GAME ,Context.MODE_PRIVATE);
String sc = sp.getString(GAME_SCORE,"");
SharedReferences sharedPref=getPreferences(Context.MODE\u PRIVATE)代码>更改为SharedReferences sharedPref=getPreferences(“MyPrefs”,Context.MODE\u PRIVATE)
@AnvarQuvandiqov getPreferences方法只接受一个int参数。如果我尝试使用此PrefManager类在内存中保存两个字符串,它们是否都具有PREF_NAME键?这个prefmanager类是否只用于保存一个字符串?prefmanager.setString(“数据”,“我的数据”)
这里“data”是键,“mydata”是值,您可以使用不同的键保存不同的值,如prefManager.setString(“test”,“testData”)代码>prefManager.setString(“用户名”、“jyotish”);您可以通过它们的键获取特定的字符串,如
stringtest=prefManager.getString(“test”)`<代码>字符串名称=prefManager.getString(“用户名”)代码>仍然不起作用。我认为这与我从示例应用程序复制文件有关。我只是不知道是什么。在过去的4年里,我一直在我的应用程序中使用SharedReferences,而且它总是有效的。我不知道问题是什么。。。