2016-09-01 5 views
0

내 테스트 응용 프로그램에 사용자를 등록하고 sharedPreferences를 사용하여 영구 저장소에 모든 데이터를 저장하지만, getData 메서드를 호출하여 로그인 한 후 해당 값을 가져오고 싶습니다.이 메서드는 모든 데이터를 반환해야합니다. 이름, 사용자 이름 및 생년월일로 구성된 현재 등록 된 사용자에 대해 저장되었습니다. 그래서 자바에서 사전이 되었기 때문에 맵을 사용하려고 생각했습니다.Android에서 sharedPreferences에서 여러 값을 가져 오는 방법은 무엇입니까?

하지만 내 잡기에 옳은 일을했는지 ​​확실하지 않습니다. getData.

public class AddUser { 

    private static String NAME_KEY; 
    private static String DOB_KEY; 
    private static String USERNAME_KEY; 
    private static String PASSWORD_KEY; 

    Map<String,String> values = new HashMap<String,String>(); 

    public static void saveData(Context context, String name, String dob, String username, String password){ 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putString(NAME_KEY, name); 
     editor.putString(DOB_KEY, dob); 
     editor.putString(USERNAME_KEY, username); 
     editor.putString(PASSWORD_KEY, password); 
     editor.commit(); 
    } 

    public Map<String, String> getData(Context context, String name, String dob, String username){ 
     SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); 
     try{ 
      sharedPrefs.getString(NAME_KEY, name); 
      sharedPrefs.getString(USERNAME_KEY, username); 
      sharedPrefs.getString(DOB_KEY, dob); 
      values = (Map<String, String>) sharedPrefs; 
      return values; 
     } catch(Exception e) { 
      e.printStackTrace(); 
      return values; 
     } 
    } 
} 

내 목표는 반환 된 값 이름, 사용자 이름과 생년월일을 얻을 내가 싶습니다 다른 필드에 표시하는 것입니다

벨로

내 코드입니다.

+0

나는 당신이 SharedPreferences를지도에 던질 수 있다고 생각하지 않는다 ... 나는 당신이 User 객체를 생성하고 그것을 반환 할 것을 제안한다. –

답변

1
public Map<String, String> getData(Context context) { //other paramaters are only usefull if you want provide default values 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); 
    Map<String, String> userDetails = new HashMap<String,String>(); //create the map with String->String 

    String name = sharedPrefs.getString(NAME_KEY, null); //get the value 
    userDetails.put(NAME_KEY, name); //put it in the map 
    String username = sharedPrefs.getString(USERNAME_KEY, null); 
    userDetails.put(USERNAME_KEY, username); 
    String dob = sharedPrefs.getString(DOB_KEY, null); 
    userDetails.put(DOB_KEY, dob); 

    return userDetails; //return the map 
} 

이 경우 맵 대신 클래스를 사용하는 것이 좋습니다. 이 값들은 서로 관련이 있습니다.

1

sharedPrefs.getString(NAME_KEY,name)은 변수에 저장해야하는 문자열 값을 반환합니다.

SharedPreferences 자체는 해시 맵과 비슷하며 키 값 쌍이 있고 안드로이드 파일을 체크인하는 경우 정확하게 SharedPreferences 값이 XML 파일에 저장됩니다.

지도를 사용할 필요가 없습니다. 그냥 할 String name=sharedPrefs.getString(NAME_KEY,name)

관련 문제