Как сохранить время и счет, используя общие предпочтения - PullRequest
0 голосов
/ 29 декабря 2011

Я разработал простое приложение, которое имеет как игра.Когда я закончил игру, отображается страница «Передано», которая отображается как время и оценка .Теперь, если я хочу играть в эту игру снова и снова.Как сохранить тот предыдущий все время и счет и текущий законченный.

Я хочу отобразить, все время и счет в списке в соответствии с высоким или низким счетом, после нажатия кнопки оценки.

Я сделал общие настройки на странице уступки, и это значение получилосьсо страницы результатов.но почему бы не показать, когда я играю в третий раз.второй раз это нормально.третий раз и тд .. просто замена наверх.У меня нет достаточной идеи, как хранить всю эту информацию в массиве и отображать в списке.Но я пытаюсь использовать карту, но не понимаю.

Я хочу отобразить этот тип формата на странице счета:

Время .............. Счет

1: 10 .............. 175

2: 05 .............. 145

1: 15 .............. 110

2: 50 ............... 90

Здесь я только что начал небольшой код, но не полный и лучше,

GaveOver.Java

Where just diplay socre , time and mistakes after finish game.

Score.Java

public class Scores extends Activity {
private static String strTime;
private static int intScore;
public static SharedPreferences settings;
public static final String MY_PREFS_NAME = "PrefName";
@Override
protected void onCreate(Bundle savedInstanceState) {
    ImageView back, reset, score_home;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.score);

    // lv = (ListView) findViewById(R.id.listView);

    getValuesFromGaveOver();

    SharedPreferences pref = this.getSharedPreferences(MY_PREFS_NAME, 0);
    String data=pref.getString("DATA", "Nothing");
    Log.i("horror", "DATA "+data);      
}
private void getValuesFromGaveOver() {
    SharedPreferences pref = this.getSharedPreferences(MY_PREFS_NAME, 0);
    strTime = pref.getString(TIME, "n/a");
    intScore = pref.getInt(SCORE, -1);
    Log.i("horror", "From Gave Over  "+"Time="+strTime+"   "+"Score="+intScore);
}
@Override
protected void onStop() {
            super.onStop();
    SharedPreferences pref = this.getSharedPreferences(MY_PREFS_NAME, 0);
    strTime = pref.getString(TIME, "");
    intScore = pref.getInt(SCORE, -1);

    savePreferences(intScore, strTime);

}

private void savePreferences(int s, String t) {
    SharedPreferences sPref = this.getSharedPreferences(MY_PREFS_NAME, 0);
    SharedPreferences.Editor edit = sPref.edit();
    edit.putString("DATA", strTime+" "+intScore);
      edit.commit();
}
}

Пожалуйста, дайте мне хорошее предложение, как это сделать?

Ответы [ 3 ]

0 голосов
/ 29 декабря 2011

используя общее предпочтение, вы можете сохранить оба,

1) сначала вам нужно сохранить время, как только это будет сделано, вы должны сохранить счет, сопоставленный с данным временем,

выдействуя таким образом, edit.putString ("DATA", strTime + "" + intScore);

Но вы можете использовать другой подход, если у вас одновременно играет только один игрок, edit.putString ("TIME",strTime);edit.putString (strTime, strScore);

1: 10 .............. 175 Итак, сначала вы сопоставили свое время с ВРЕМЯ, а затем сопоставили счет 175 с 1: 10

Надеюсь, это поможет вам

0 голосов
/ 29 декабря 2011

Хорошей идеей было бы определить оценку удержания Java-бина (скажем, с 2 полями, время в секундах / точках / может быть дата / имя / еще какие поля вы хотите сохранить).С ними вы можете легко выполнить следующие действия:

  • отсортировать в списке и ограничить их количество (вам не нравится иметь 10000 записей, 100 будет достаточно)
  • сделать этосписок в / из JSON (Бесстыдная самореклама: https://github.com/ko5tik/jsonserializer)
  • Хранить JSON в общем предпочтении или в личном файле приложения (я храню до 100 локальных записей рекордов и 1000 баллов за все время)и использовать файлы)
0 голосов
/ 29 декабря 2011

Самый простой способ - использовать базы данных sqlite.

Использование SharedPreferences намного проще, особенно для начинающих. Вы можете сделать это следующим образом: вы сохраняете третий элемент, фактический счетчик записей как SharedPreference. Каждый раз, когда вы сохраняете новую запись, вы увеличиваете этот счетчик. Затем вы добавляете текущий номер счетчика к клавишам TIME и SCORE.

// Saves a new entry | Attention: code not tested!
save(int score, int time){
 SharedPreference pref = ...
 SharedPreference.Editor editor = ...

 int newEntryID = pref.getInt("numEntries", 0) + 1;

 editor.setInt("numEntries", newEntryID);
 editor.setInt("score" + newEntryID, score);
 editor.setString("time" + newEntryID, time); 
 editor.commit();
}

Предполагая, что «оценка» - это SharedPreference-Key для SCORE и то же время.

Чтение будет по той же схеме.

for(int i=0; i<numEntries; ++i){
  pref.getInt("score" + i, 0);
  ...
}
...