我想我现在有一个功能齐全的琐事游戏。在结果页面上的游戏结束时,它显示分数(长)和百分比(int)。我想实现一个离线的SharePreferences高分,现在输入3个变量 - rank(int),score(long)和percentage(int)。我试图首先用其中一个变量实现一个高分,然后再添加另外两个变量,但我似乎失败了。您可以在我的活动下面看到很多已注释掉的代码,我正在尝试这些内容并且已经删除了很多其他尝试。
这是我第一次尝试使用SharedPreferences,所以我还没有掌握它。
Results.java
public class Results extends Activity {
public static final String SP_NAME = "TEST";
public static final String INT_PERCENTAGE = "SP_percentage";
public static final String INT_RANK = "SP_rank";
public static final String LONG_SCORE = "SP_score";
private SharedPreferences mPrefs;
QuestionView qv = new QuestionView();
ArrayList<Question> queryList = qv.getQueries();
int cAnswers, wAnswers, percentage, rank;
long score;
ArrayList<Question> qs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.resultsmain);
mPrefs = getSharedPreferences(SP_NAME, 0);
cAnswers = getIntent().getIntExtra("correctAnswers", -1);
wAnswers = getIntent().getIntExtra("wrongAnswers", -1);
score = getIntent().getLongExtra("score", -1);
qs = getIntent().getParcelableArrayListExtra("queries");
Button mainmenuBtn = (Button)findViewById(R.id.mainmenuBtn);
mainmenuBtn.setText("Main Menu");
mainmenuBtn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
restart();
}
});
//Retrieving high score
SharedPreferences mPrefs = getSharedPreferences(LONG_SCORE, 0);
SharePreferences.Editor editor = prefs.edit();
long highscore = mPrefs.getLong(LONG_SCORE, 0);
//Saving current score as high score
/* SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInteger(HIGH_SCORE, currentScore);*/
// Commit the edits!
editor.commit();
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
/* SharedPreferences.Editor editor = prefs.edit();
return editor.commit();*/
showResults();
}
//...other code
}
答案 0 :(得分:2)
关键是,您不了解SharedPreference的用法。对于这个高分,你应该使用SQLite数据库或文本文件。
请阅读指南http://developer.android.com/guide/topics/data/data-storage.html,以便更好地了解Android中不同类型的持久性方法。
顺便说一句,你应该创建一个包含你所说的三列(rank(int),score(long)和percentage(int))的表,并做一点CRUD以使你的高分能够正常运行。您将必须了解如何使用SQLiteOpenHelper并创建自己的,以创建表创建过程。然后,创建模型类来管理数据。因此,如果您在阅读developer.android.com指南后仍有疑问,请在Google中搜索SQLite教程。
答案 1 :(得分:1)