两个SharedReference在java中不起作用

两个SharedReference在java中不起作用,java,android,sharedpreferences,Java,Android,Sharedpreferences,我尝试使用两个SharedReference,第一个有效,但第二个无效 这是我的Java代码 public class JogoActivity extends AppCompatActivity implements View.OnClickListener { //OTHERS VARIABLES public TextView txtViewResult,txtCoins, txtTentativas; private static final String PREF_NAME =

我尝试使用两个SharedReference,第一个有效,但第二个无效

这是我的Java代码

public class JogoActivity extends AppCompatActivity implements View.OnClickListener {


//OTHERS VARIABLES

public TextView txtViewResult,txtCoins, txtTentativas;
private static final String PREF_NAME = "JogoActivityPreferences";
int resulFinalCache,coinsFinalCache;
int count1, count2 ;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Configuration config = getResources().getConfiguration();


    //methods...

    //MY PROBLEMS START HERE

    txtCoins = (TextView) findViewById(R.id.txtCoins);
    txtViewResult = (TextView) findViewById(R.id.textViewResultado);

    SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
    count1 = sp1.getInt("count1", 0);
    txtViewResult.setText(String.valueOf(formatter.format(count1).toString()));//THIS IS WORKING

    SharedPreferences sp2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
    count2 = sp2.getInt("count2", 0);
    txtCoins.setText(String.valueOf(formatter.format(count2).toString()));////THIS ISN'T 

}

//Creating methods...

@Override
protected void onStop(){
    super.onStop();

    SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS IS WORKING
    count1 = sp1.getInt("count1", 0);
    SharedPreferences.Editor editor = sp1.edit();
    editor.putInt("count1", resulFinalCache);
    editor.commit();

    SharedPreferences sp2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS ISN'T
    count2 = sp2.getInt("count2", 0);
    editor = sp1.edit();
    editor.putInt("count2", coinsFinalCache);
    editor.commit();

}


@Override
public void onDestroy() {
    super.onDestroy();
    SharedPreferences sp1= getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS IS WORKING
    SharedPreferences.Editor editor = sp1.edit();
    editor.putInt("count1", resulFinalCache);
    editor.commit();

    SharedPreferences sp2= getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS ISN'T
    editor = sp2.edit();
    editor.putInt("count2", coinsFinalCache);
    editor.commit();

}
}

每次我启动应用程序时,我使用,我关闭应用程序并再次打开,TextView txtViewResult工作正常,但txtCoins没有

我试着只使用getPreferences而不使用GetSharedReferences,但这也不管用

我尝试创建其他编辑器,但也不起作用

我做错什么了吗

多谢各位

嗯,你的解决办法是

SharedPreferences sp1_2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
count1 = sp1_2.getInt("count1", 0);
SharedPreferences.Editor editor = sp1_2.edit();
editor.putInt("count1", resulFinalCache);
editor.commit();
count2 = sp1_2.getInt("count2", 0);
editor = sp1_2.edit();
editor.putInt("count2", coinsFinalCache);
editor.commit();
//now both will work
实际上,绑定这些方法。您的解决方案是

SharedPreferences sp1_2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
count1 = sp1_2.getInt("count1", 0);
SharedPreferences.Editor editor = sp1_2.edit();
editor.putInt("count1", resulFinalCache);
editor.commit();
count2 = sp1_2.getInt("count2", 0);
editor = sp1_2.edit();
editor.putInt("count2", coinsFinalCache);
editor.commit();
//now both will work

实际上,绑定方法通常我可以建议您简单地使用

保存:

PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("name", 1).apply();
阅读:

PreferenceManager.getDefaultSharedPreferences(this).getInt("name", 0);

享受吧

一般来说,我可以建议您简单地使用

保存:

PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("name", 1).apply();
阅读:

PreferenceManager.getDefaultSharedPreferences(this).getInt("name", 0);

享受吧

无需调用GetSharedReferences两次

只要叫它一次,它就会工作得很好

你的顶头上司是

SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS IS WORKING
count1 = sp1.getInt("count1", 0);
SharedPreferences.Editor editor = sp1.edit();
editor.putInt("count1", resulFinalCache);
count2 = sp1.getInt("count2", 0);
editor.putInt("count2", coinsFinalCache);
editor.commit();

无需调用GetSharedReferences两次

只要叫它一次,它就会工作得很好

你的顶头上司是

SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);//THIS IS WORKING
count1 = sp1.getInt("count1", 0);
SharedPreferences.Editor editor = sp1.edit();
editor.putInt("count1", resulFinalCache);
count2 = sp1.getInt("count2", 0);
editor.putInt("count2", coinsFinalCache);
editor.commit();

获取它们时不要使用相同的名称! 而不是

SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);

SharedPreferences sp2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
使用两个不同的名称,如下所示:

SharedPreferences sp1 = getSharedPreferences(PREF_NAME1, MODE_PRIVATE);

SharedPreferences sp2 = getSharedPreferences(PREF_NAME2, MODE_PRIVATE);

此外,您不需要两个不同的共享首选项。只需使用一个,并将这两个值与不同的键放在一起。

获取它们时不要使用相同的名称! 而不是

SharedPreferences sp1 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);

SharedPreferences sp2 = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
使用两个不同的名称,如下所示:

SharedPreferences sp1 = getSharedPreferences(PREF_NAME1, MODE_PRIVATE);

SharedPreferences sp2 = getSharedPreferences(PREF_NAME2, MODE_PRIVATE);

此外,您不需要两个不同的共享首选项。只需使用一个,并将这两个值与不同的键放在一起。

不需要创建第二个SharedReferences引用变量,请确保您能够在xml文件中保存count2标记。我认为这只是一篇愚蠢的文章。我想他不是在胡闹就是超兴奋。谁使用2个SharedRefers来表示2个值:这里不需要创建SharedReferences的第二个引用变量,请确保您能够在xml文件中保存count2标记,我认为这只是一篇愚蠢的文章。我想他不是在胡闹就是超兴奋。谁将2个SharedPref用于2个值:D