Java 在Android上存储和检索值
我想在Android上保存一个字符串值,并在每次应用程序启动时访问该字符串 例如,字符串值将具有他自己创建的用户名。重新启动应用程序后,他会在上面写上这个名字。像饼干之类的。如何在android内存中保存这样的文件 有人能指引我吗 我用过:Java 在Android上存储和检索值,java,android,sharedpreferences,Java,Android,Sharedpreferences,我想在Android上保存一个字符串值,并在每次应用程序启动时访问该字符串 例如,字符串值将具有他自己创建的用户名。重新启动应用程序后,他会在上面写上这个名字。像饼干之类的。如何在android内存中保存这样的文件 有人能指引我吗 我用过: public class Login extends Activity { String user = null; public String saveUserOnAndroid() { SharedPreferences myPrefs = ge
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;
}
而且似乎效果不好。有几种选择。我建议使用。有几个选项。我建议您使用。您必须这样做:
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);
}
你必须这样做:
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);
}
您没有提到要从另一个类调用
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;
}
}
调用此方法时,不要忘记为其提供所需的
上下文,您应该不会有问题。您没有提到要从另一个类调用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;
}
}
调用此方法时,不要忘记为其提供所需的上下文
,您应该没事。在发布此类问题之前,请检查以确保该方法未被询问。您需要更具体地说明您想要什么。为什么不是呢“你工作不好吗?我们需要更多的信息。是我发布了相同的信息,但无法在那里粘贴代码。感谢您的投票。没有显示任何错误,但程序总是像以前保存的字符串一样创建新字符串。我是否要在清单中添加一些权限?在发布此类问题之前,请检查以确保它没有被询问。您需要更具体地说明您想要什么。为什么不是呢“你工作不好吗?我们需要更多的信息。是我发布了相同的信息,但无法在那里粘贴代码。感谢投票。没有显示任何错误,但程序总是创建新字符串,就像以前没有保存过一样。我是否要向清单中添加一些权限?我确实使用SharedReferences,但无法检索保存的信息。我确实使用SharedReferences,但无法检索保存的信息。要在关闭api后调用Pause时尝试此解决方案吗?是的,开始指向此链接:是否要尝试此解决方案?是否在关闭api后调用暂停?是否转到此链接:是的,确定,刚刚完成。我没有onCreate()方法,因为我从另一个类调用了这个方法saveUserOnAndroid(),这可能是原因吗?理想情况下,这不会有什么区别。活动扩展了上下文。这就是为什么它有这些方法和与上下文相关的一切是的,当然,就是这样做的。我没有onCreate()方法,因为我从另一个类调用了这个方法saveUserOnAndroid(),这可能是原因吗?理想情况下,这不会有什么区别。活动扩展了上下文。这就是为什么它有这些方法以及与上下文相关的一切