Android Studio:如何在首选项中保存最后一个活动,以便在重新启动时加载

时间:2017-07-10 18:58:01

标签: android sharedpreferences

大家。我是一位认真的新秀,所以请在一定程度上原谅形式/术语问题。我承诺,我已经在这里研究了这个问题已经包括了所有相关的部分。是的,我阅读了Android资料。我也读过关于这个主题的3本书的章节!

每个人似乎都使用与用户名或声音设置相关的示例。我是否使用了错误的地方来保存这种数据类型?

作为我尝试学习Java和Android的第一个项目,我正在写一本互动小说书 - 从童年开始考虑选择自己的冒险书。

我希望应用程序在sharedPreferences中保存最新的活动名称,以便应用程序(自动或通过"加载游戏"按钮)返回到用户所在的活动(页面)最后。

我打算在用户浏览本书时编辑每个活动的首选项,以便他们可以在任何地方加载。

这是我认为的代码我应该用来设置偏好:

SharedPreferences setpage = getSharedPreferences("page", Context.MODE_PRIVATE);
SharedPreferences.Editor editor =setpage.edit();
editor.setpage ("page");

但是我立即在" editor.setpage"上得到了红色字母。我做错了什么?

您将如何保存偏好中的最后一项活动?

谢谢!

3 个答案:

答案 0 :(得分:1)

setPage(..)

SharedPreferences.Editor方法

您可以这样设置值:

SharedPreferences prefs = getSharedPreferences("MY PREF", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("pageName","page");
editor.apply();

您想要检索数据之后:

SharedPreferences prefs = getSharedPreferences("MY PREF", MODE_PRIVATE); 
String pageName = prefs.getString("pageName", null);
if (pageName == null) {
    //"No name defined" is the default value.
}

您可以从here

查看有关SharedPreferences的更多信息

答案 1 :(得分:1)

将活动名称另存为字符串

SharedPreferences sharedPref = getSharedPreferences("MyPages", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("page", "PageX");
editor.apply();

然后从SharedPreference获取活动并启动它

SharedPreferences sharedPref = getSharedPreferences("MyPages", Context.MODE_PRIVATE);
            String page = sharedPref.getString("page", "PageX"); 
            Intent ActivityPage = new Intent(MainActivity.this, Class.forName(page));
            startActivity(ActivityPage);

答案 2 :(得分:0)

SharedPreferences无法实现您想要做的事情,因为它非常基础。但我建议您了解数据库及其与Android的集成。但有时您可能需要SharedPreferences,例如当您需要计算用户打开应用程序的次数时。

让我使用下面的代码告诉SharedPreferences。

第一行创建新的SharedPreference对象,第二行创建编辑器换句话说,您创建一个铅笔以向SharedPreferences写入内容。

在第四行中,您获得之前的count金额。 getInt()方法的第一个论点是给我count,如果计数不存在则返回0(这是第一次打开应用程序时发生)

如果你在第六行查看putInt()方法哪些争论(在paranthesises之间的事情),第一个争论是count是一个唯一的密钥,你将在其中存储你的数据(数据类型取决于方法你打电话给你可能也会使用putString()来表示其他情况)。当你想获得价值时你需要这个钥匙(正如我们在第四行中所做的那样),第二个争论是count的新值

最后一行做了这个改变。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = preferences.edit();

int previousCount = preferences.getInt("count", 0);

editor.putInt("count", previousCount + 1);
editor.commit();