繁体   English   中英

具有SharedPreferences的离线高分-Android(java)

[英]Offline highscores with SharedPreferences - Android (java)

我想我现在有一个功能齐全的琐事游戏。 在游戏结束时,在结果页上它显示得分(长)和百分比(整数)。 我现在想实现一个离线SharePreferences高分,在其中输入3个变量-rank(int),score(long)和percent(int)。 我试图首先使用一个变量实现高分,然后再添加另外两个变量,但是我似乎失败很严重。 您可以在下面的活动中看到很多注释掉的代码,这些代码是我尝试的地方,许多其他尝试已被删除。

这是我第一次尝试使用SharedPreferences,因此我对此还没有足够的了解。

结果.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
}

关键是,您不了解SharedPreference的用法。 对于这些高分的东西,您应该使用SQLite数据库或文本文件。

请阅读指南http://developer.android.com/guide/topics/data/data-storage.html ,以更好地了解Android中不同类型的持久化方法。

顺便说一句,您应该使用所说的三列(rank(整数),score(长整数)和percent(int))创建一个表,并做一点CRUD以使您的高分表现良好。 您将必须了解如何使用SQLiteOpenHelper并创建自己的表创建过程。 然后,创建您的模型类来管理数据。

因此,如果您在阅读developer.android.com指南后仍然有疑问,请在Google中搜索SQLite教程。

看来您的问题已得到很好的回答,但我只是将其扔在那里进行观察(您知道的更多!对吗?)。

您可能会发现,使用在线排行榜系统比处理本地维护更容易。 它可以节省您很多工作,并为您带来好处,让玩家可以轻松地在全球范围内竞争。 Swarm (aka SwarmConnect), ScoreloopPapaya是要检查的一些选项。 尽管我认为Swarm的系统可能是开箱即用最快,最容易的系统,但所有这三个都提供了一种建立和运行全球排行榜的方法。

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM