在Android上存储和检索值

时间:2012-01-22 16:41:04

标签: java android sharedpreferences

我想在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;
}

似乎不能很好地运作。

3 个答案:

答案 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);
}