2012-01-22 93 views
1

我想要在Android上保存一個字符串值,並且每次應用程序啓動時都可以訪問此字符串。在Android上存儲和檢索值

例如,字符串值將具有他自己創建的用戶名。重新啓動應用程序後,他會將此名稱放在頂部。就像一個cookie或其他東西。如何在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

在發佈這樣的問題檢查之前,確保它沒有被問到。 – JoxTraex

+0

你需要對你想要的更具體。爲什麼不「不適合你」?我們需要更多的信息。 – JoxTraex

+0

這是我發佈了相同的wuestion,但不能粘貼代碼。謝謝投票。 – karas

回答

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,你應該沒問題。

+0

是的,只是做到了。我沒有onCreate()方法因爲我從另一個類調用saveUserOnAndroid()方法,它可以是一個原因嗎? – karas

+0

@karas查看我更新的答案。 –

+0

這在理想情況下不應有所作爲。一個Activity擴展了Context。這就是爲什麼它有這些方法和一切涉及上下文 – JoxTraex

0

有幾個選項,described here。我建議使用SharedPreferences

+0

OP **已經**而不是使用'SharedPreferences'? –

+0

我確實使用SharedPreferences,但我無法檢索保存的信息。 – karas

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); 
} 
+0

要試試這個解決方案關閉API後調用onPause? – karas

+0

是轉到此鏈接:http://cse.spsu.edu/jpreston/CGDD4203/images/application_lifecycle_android.jpg – aha16