我想在Android上保存一个String值,并且每次应用程序启动时都可以访问此String。
例如,String值将具有他自己创建的用户名。重新启动应用程序后,他的名字已经在顶部了。像饼干或其他东西。如何在android内存中保存这样的文件?
有人可以指导我吗?
我用过:
public class Login extends Activity
{
String user = null;
public String saveUserOnAndroid()
{
SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", 0);
String savedUser = myPrefs.getString("user", null);
if(savedUser == null)
{
user = UUID.randomUUID().toString();
String hashedUser = md5(user);
SharedPreferences.Editor myPrefsEditor = myPrefs.edit();
myPrefsEditor.putString("user", hashedUser);
myPrefsEditor.commit();
return hashedUser;
}
else
return savedUser;
}
似乎不能很好地运作。
答案 0 :(得分:1)
嗯,你没有提到你从另一个类调用saveUserOnAndroid()
方法。在这种情况下:
public String saveUserOnAndroid(Context c) {
SharedPreferences myPrefs = c.getSharedPreferences("myPrefs", 0);
String savedUser = myPrefs.getString("user", null);
if(savedUser == null) {
user = UUID.randomUUID().toString();
String hashedUser = md5(user);
SharedPreferences.Editor myPrefsEditor = myPrefs.edit();
myPrefsEditor.putString("user", hashedUser);
myPrefsEditor.commit();
return hashedUser;
} else {
return savedUser;
}
}
在调用此方法时,不要忘记为其提供所需的Context
,您应该没问题。
答案 1 :(得分:0)
有几个选项,described here。我建议使用SharedPreferences。
答案 2 :(得分:0)
你必须这样做:
public static final String mypref="mypref";
public static String Username="";
@Override
public void OnCreate(Bundle ic){
super.OnCreate(ic);
setContentView(R.layout.main);
SharedPreference sh = getSharedPreference(mypref, 0);
Username = sh.getString("User", Username);
}
public void onPause(){
super.onPause();
SharedPreference sh = getSharedPreference(mypref, 0);
SharedPreference.Editor editor = sh.edit();
editor.putString("User", Username);
}