2015-08-30 48 views
-5

因此,在我制作的游戏中,我使用SharedPreferences来保存我的数据,但它不保存我的数据或恢复它(两者或两者)。 (是的,我知道用double.valueOf()得到的是低效率的,但是这不是现在的问题)SharedPreferences不保存我的数据

这里是我的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(); 

} 

而且这里是我的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(); 
} 

编辑:我永远不会去了解为什么我被低估,如果我不知道为什么我被低估。感谢

+1

区分大小写:'savefile.getInt( “hasplayed”,0);'不匹配'editor.putInt( “hasPlayed”,1);' –

+0

他们在上面定义它。没有包括它来节省空间,对不起 – 343N

+0

问题是你得到sharedprefs同样的方式来读写,这是不正确的,并显示缺乏研究...然后,... Downvotes来了... –

回答

3

更换

SharedPreferences savefile = getPreferences(MODE_PRIVATE); 

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

,并按照this link

+0

另外'SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);'会做伎俩 –

+0

完成,依然不会保存。 – 343N

+0

完成什么?你检查链接?或者你等到解决方案来魔术? –

0

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

savefile.getInt("hasplayed", 0);

editor.putInt("hasPlayed", 1);

+0

我修复了这个问题。但它仍然没有保存。 – 343N