Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SharedReferences在重复的Android Studio项目中不起作用_Java_Android_Android Studio_Sharedpreferences - Fatal编程技术网

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,而且它总是有效的。我不知道问题是什么。。。