简体   繁体   English

SharedPreferences 没有保存我的数据

[英]SharedPreferences isn't saving my data

So in my game I'm making, I'm using SharedPreferences to save my data, however it's not saving my data or restoring it (either or both).所以在我正在制作的游戏中,我使用 SharedPreferences 来保存我的数据,但是它没有保存我的数据或恢复它(两者之一)。 (And yes I know getting using double.valueOf() is inefficient but that's not the problem now) (是的,我知道使用double.valueOf()效率低下,但这不是现在的问题)

Here's my onCreate (where I get all the saved data)这是我的 onCreate(我在那里获取所有保存的数据)

       public int hasPlayed = 0;
public double $money;
public int $isonmainpage = 1;
Random random = new Random();
public int $cantafford = 0;
public double $employertimer;
public double $employercounter;

public double $employeeupgrade1earnings;
public double $employeeupgrade1cost = 1;
public double $employeeupgrade1level;


public double $employerupgrade1level;
public double $employerupgrade1earnings;
public double $employerupgrade1cost = 1;
public double $allupgrades;
public String version = "0.0.1";
;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    hasPlayed = sharedpreferences.getInt("hasPlayed", 1);
    sharedpreferences.getAll();

    if (hasPlayed == 1){
        $money = Double.valueOf(sharedpreferences.getString("money", (Double.toString($money))));
        $employercounter = Double.valueOf(sharedpreferences.getString("employercounter", (Double.toString($employercounter))));
        $employerupgrade1earnings = Double.valueOf(sharedpreferences.getString("employerupgrade1earnings", (Double.toString($employerupgrade1earnings))));
        $employerupgrade1level = Double.valueOf(sharedpreferences.getString("employerupgrade1level", (Double.toString($employerupgrade1level))));
        $employerupgrade1cost = Double.valueOf(sharedpreferences.getString("employerupgrade1cost", (Double.toString($employerupgrade1cost))));
        $employeeupgrade1level = Double.valueOf(sharedpreferences.getString("employeeupgrade1level", (Double.toString($employeeupgrade1level))));
        $employeeupgrade1earnings = Double.valueOf(sharedpreferences.getString("employeeupgrade1earnings", (Double.toString($employeeupgrade1earnings))));
        $employeeupgrade1cost = Double.valueOf(sharedpreferences.getString("employeeupgrade1cost", (Double.toString($employeeupgrade1cost))));
    }
    if (hasPlayed == 0) {
        hasPlayed = 1;
        editor.putInt("hasPlayed", 1);
        editor.commit();
    }
    updatemoney();
    timer();

}

And here's my onStop/onPause (when I save the data)这是我的 onStop/onPause(当我保存数据时)

@Override
protected void onPause() {
    super.onPause();
    SharedPreferences sharedpreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putString("money", (Double.toString($money)));
    editor.putString("employercounter", (Double.toString($employercounter)));
    editor.putString("employerupgrade1earnings", (Double.toString($employerupgrade1earnings )));
    editor.putString("employerupgrade1level", (Double.toString($employerupgrade1level)));
    editor.putString("employerupgrade1cost", (Double.toString($employerupgrade1cost)));
    editor.putString("employeeupgrade1level", (Double.toString($employeeupgrade1level)));
    editor.putString("employeeupgrade1earnings", (Double.toString($employeeupgrade1earnings)));
    editor.putString("employeeupgrade1cost", (Double.toString($employeeupgrade1cost)));
    editor.commit();
}

@Override
protected void onStop() {
    super.onStop();
    SharedPreferences sharedpreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putString("money", (Double.toString($money)));
    editor.putString("employercounter", (Double.toString($employercounter)));
    editor.putString("employerupgrade1earnings", (Double.toString($employerupgrade1earnings )));
    editor.putString("employerupgrade1level", (Double.toString($employerupgrade1level)));
    editor.putString("employerupgrade1cost", (Double.toString($employerupgrade1cost)));
    editor.putString("employeeupgrade1level", (Double.toString($employeeupgrade1level)));
    editor.putString("employeeupgrade1earnings", (Double.toString($employeeupgrade1earnings)));
    editor.putString("employeeupgrade1cost", (Double.toString($employeeupgrade1cost)));
    editor.commit();
}

edit: im never going to learn why i'm being downvoted if i'm not told why i'm being downvoted.编辑:如果我没有被告知为什么我被拒绝投票,我永远不会知道为什么我被拒绝投票。 thanks谢谢

Replace代替

SharedPreferences savefile = getPreferences(MODE_PRIVATE);

with

SharedPreferences  sharedpreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);

and follow this link并点击此链接

我想这应该是因为这个hasplayedhasPlayed ,关键应区分大小写

savefile.getInt("hasplayed", 0);

editor.putInt("hasPlayed", 1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM