Java 在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

我想在Android上保存一个字符串值,并在每次应用程序启动时访问该字符串

例如,字符串值将具有他自己创建的用户名。重新启动应用程序后,他会在上面写上这个名字。像饼干之类的。如何在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;
}

而且似乎效果不好。

有几种选择。我建议使用。

有几个选项。我建议您使用。

您必须这样做:

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(),这可能是原因吗?理想情况下,这不会有什么区别。活动扩展了上下文。这就是为什么它有这些方法以及与上下文相关的一切