如何在Android应用程序中保存变量的状态并使用它

时间:2011-12-05 21:20:26

标签: android

我有一个基于eclipse构建的Android应用程序。我目前正在做的是随机询问xml文件中的问题集。 Xml文件如下所示:

<item>
    <ques></ques>
    <option1></option1>
    <option2></option2>
    <option3></option3>
    <ans></ans>
    <level>1</level>
</item>
<item>
    <ques></ques>
    <option1></option1>
    <option2></option2>
    <option3></option3>
    <ans></ans>
    <level>1</level>
</item>
<item>
    <ques></ques>
    <option1></option1>
    <option2></option2>
    <option3></option3>
    <ans></ans>
    <level>2</level>
</item>

等......

现在我正在从第一级随机选择问题。就像第1级有50个问题,第2级有50个。我想现在按顺序选择问题。喜欢从上到下开始。就像用户A登录玩游戏一样,他会被问到问题a和b从1级。然后他关闭游戏并再次登录,所以他现在应该看到c和d。

我的问题是这个状态如何在android中保存?有一个简单的方法吗?

4 个答案:

答案 0 :(得分:7)

你可以做的是,每个级别都有编号

对于1级问题,使用int变量来跟踪用户所在的问题。你可能有

int questionNumber;
在您的方法中,

为用户获取的每个问题声明

 questionNumber++;

现在,当玩家离开活动或退出应用时。

将问题编号放在Shared Preference中,如下所示..

  SharedPreferences app_preferences = 
        PreferenceManager.getDefaultSharedPreferences(this);

 SharedPreferences.Editor editor = app_preferences.edit();
    editor.putInt("questionNumber", questionNumber);
    editor.commit(); // Very important

现在将数字拉出来只需使用..

  SharedPreferences app_preferences = 
        PreferenceManager.getDefaultSharedPreferences(this);

    // Get the value for the run counter
    questionNumber = app_preferences.getInt("questionNumber", 0);// The 0 is there for if the user hastn played before it is set to 0 automatically or you can set it to 1

编辑:

此外,您可以使用一个变量来跟踪用户所处的等级,例如

int userLevel;

只需像以前一样将其保存为共享首选项。

答案 1 :(得分:1)

使用SharedPreferences存储和检索值...非常易于使用。(http://developer.android.com/reference/android/content/SharedPreferences.html)。

答案 2 :(得分:1)

最简单的方法是使用共享首选项。有关相关文档的指示,请参阅指南主题Data Storage

答案 3 :(得分:0)