我在 Eclipse 中构建的适用于 Android 的 Gingerbread 2.3.3 应用程序中有 3 个活动。
1) MainActivity
---两个选项,去LoginActivity或者直接去HomeScreenActivity
2) LoginActivity
--- 输入登录凭据(即用户名和密码),验证,然后存储在 SharedPreferences 中。验证成功后,进入 HomescreenActivity。这是我在 LoginActivity 中的 SharedPreferences 部分的内容:
public static final String PREFS_FILE = "MY_PREFS";
SharedPreferences prefs = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("USERNAME", getUsername());
editor.putString("PASSWORD", getPassword());
editor.commit();
3) HomescreenActivity
--- 一个基本的主屏幕,在 TextView 的右上角显示谁现在已登录。为此,我的 onResume() 包含:
public static final String PREFS_FILE = "MY_PREFS";
SharedPreferences prefs = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
TextView name_text = (TextView) findViewById(R.id.name_text_vw);
name_text.setText(prefs.getString("USERNAME", "");
当我使用LoginActivity
和登录时,我在HomescreenActivity
. 但是,当我退出应用程序并执行一些其他操作以使活动脱离堆栈时,我想返回应用程序,直接转到我的HomescreenActivity
并查看我的用户名已经登录。但这不会发生。有谁知道为什么?我认为即使在您离开应用程序之后,SharedPreferences 也是存储设置和数据的方式。也许我没有使用正确的模式——又名MODE_WORLD_READABLE
或MODE_WORLD_WRITABLE
?