2012-01-22 3 views
1

Android에 문자열 값을 저장하고 응용 프로그램이 시작될 때마다이 문자열에 액세스하려고합니다.Android에서 값 저장 및 검색

예를 들어 String 값은 사용자가 직접 만든 사용자 이름을 갖습니다. 그리고 앱을 다시 시작한 후에 그는 이미이 이름을 맨 위에 올렸을 것입니다. 쿠키 같은 거. 그런 파일을 안드로이드 메모리에 저장하는 방법은 무엇입니까?

나를 인도 할 수 있습니까?

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

투표 해 주셔서 감사합니다. 투표에 감사드립니다. – 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

이것은 이상적으로 차이를 만들어서는 안됩니다. 활동은 컨텍스트를 확장합니다. 그래서 그 방법을 가지고 있고 컨텍스트와 관련된 모든 것이 있습니다. – 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

관련 문제