簡體   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