我正在开发简单的应用程序,它就像游戏一样。当我完成游戏后,显示的页面显示为时间和得分。现在,如果我想一次又一次地玩这个游戏。如何存储以前的所有时间和分数和当前完成。
我希望在点击分数按钮后,根据从高到低的分数显示所有时间并进入列表。
我在赠品页面中完成了共享偏好,并且该值来自得分页面。但是为什么不在第三次比赛时显示。第二次没关系。第三次等等......只是替换向上。我没有足够的想法,如何将所有信息存储到数组并显示在列表中。但我尝试使用地图,但没有更多的想法。
我想在分数页面中显示这种格式:
时间..............分数
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();
}
}
请给我一个好的建议,怎么做?
答案 0 :(得分:0)
最干净的方法是使用sqlite数据库。
使用SharedPreferences
要容易得多,尤其是初学者。
您可以这样做:您保存第3项,实际条目数为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();
}
假设"得分"是SCORE的SharedPreference-Key,当时也是如此。
阅读将采用相同的方案。
for(int i=0; i<numEntries; ++i){
pref.getInt("score" + i, 0);
...
}
答案 1 :(得分:0)
使用共享首选项,您可以存储两者,
1)首先你需要存储时间,一旦完成,你必须在给定时间内存储得分,
你是这样做的, edit.putString(“DATA”,strTime +“”+ intScore);但是如果你一次只玩一个玩家,你可以采取不同的方法, edit.putString(“TIME”,strTime); edit.putString(strTime,strScore);
1:10 .............. 175 所以首先用时间映射你的时间,然后用1:10
绘制得分175希望这会对你有所帮助
答案 2 :(得分:0)
好主意是定义Java bean持有分数(例如,使用2个字段,以秒为单位的时间/点/可能是日期/名称/您希望存储的其他字段)。您可以轻松地使用它们: