2015-08-30 2 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(); 
} 

редактировать: им никогда не будет знать, почему я хочу быть downvoted, если я не сказал, почему я хочу быть downvoted. благодаря

+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

Я предполагаю, что это должно быть из-за этого hasplayed и hasPlayed, ключ должен быть чувствителен к регистру

savefile.getInt("hasplayed", 0);

editor.putInt("hasPlayed", 1);

+0

Я исправил это. Тем не менее, он все еще не сохраняет. – 343N

Смежные вопросы