2011-11-03 4 views
1

나는 문자열/문자열 배열/등을 저장하는 방법에 대해 여러 웹 사이트에서 지난 반나 동안 찾고있었습니다. 나는 그것을 알아낼 수 없다. 데이터 저장소를 구현하는 방법을 이해하지 못했습니다. 하지만 여기에 내 문제가 있습니다. 간단히 말하면, 나는 두 개의 활동 페이지를 가지고 있습니다. (각각 'A, B'로 이름을 짓습니다.) 모두 내가하고 싶은 일은 활동 B의 텍스트보기에서 문자열을 가져 와서 배열에 저장 한 다음 활동 A의 버튼을 클릭하여 액세스하게하는 것입니다.안드로이드 저장 문자열 배열

나는 간단하지만 나는 어떤 이유에서 차단 ... SharedPreferences를 사용하려고하는데 어떻게 B에서 문자열을 가져 와서 전역 배열에 저장하고 다른 활동 (활동 A)에 액세스 할 수 있습니까?

+0

모두에게 도움을 주셔서 감사합니다. – Derek

답변

3

그냥() (onPause에서 보통) 공유 환경 설정으로 저장 :

  SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
      editor.putString(GAME_STATE, writer.toString()); 
      editor.commit(); 

() 일반적으로 onResume()에서 다른 하나 개의 활동과 부하 :

 SharedPreferences preferences = getPreferences(MODE_PRIVATE); 


    String jsonState = preferences.getString(GAME_STATE, null); 

그리고 아무것도 방지를 공용 정적 변수를 사용하지 마십시오

+0

좋아,이게 내가 본 것인데, 나를 위해 문제가 여기에서 발생합니다. 이 프로그램은 매우 간단하며 스레드를 사용하지 않고 의도 만 사용하고 있습니다. 매우 비효율적 인 것처럼 보이지만 아주 작은 프로그램입니다. 에디터를 호출 할 때, putString을 어떻게 저장할 것인가? 편집기가 스택처럼 작동하여 여러 문자열을 사용할 수 있습니까? 아니면 한 번에 하나의 문자열 만 저장할 수 있습니까? – Derek

+0

환경 설정 편집기는 map입니다. 그냥 javadocs를 두려워합니다. 다른 키 아래에 문자열과 프리미티브를 저장할 수 있습니다. 비효율적 인 것처럼 보일 수도 있지만, 이것은 당신의 활동이 어느 순간에 멈추고 죽을 수있는 환경에서 할 수있는 적절한 방법입니다 (예를 들어 들어오는 호출에서) –

+0

만약 내가 한 문자열을 저장하고 싶다면 지금은 쉬울 것입니다. 여러 문자열을 저장 하시겠습니까? 사용자가 "텍스트 저장"버튼을 누르면 해당 코드가 호출되지만 동일한 키가있는 편집기에서 문자열을 만들지 않겠습니까? 이 문제를 해결할 방법이 있습니까? – Derek

0

예 글로벌 배열에서 값을 가져 와서 저장할 수 있지만 응용 프로그램을 닫으면 모든 것이 손실됩니다. 따라서 테이블을 만들고 필요할 때마다 테이블에서 값을 저장/가져 오는 것이 좋습니다.

다음은 SQLite example을 생성하는 예입니다.

+0

그래, 내가 SQLite를 필요로 할 것 같니? 나는 단지 20 개의 현을 저장하려고한다. – Derek

+0

@Derek 그러나 응용 프로그램을 저장하고 닫으면 응용 프로그램을 다시 열 때 모든 것이 손실됩니다. –

+0

SQLite는 과도한 작업입니다. –

1

배열을 공유 환경 설정에 직접 저장할 수는 없지만 세트를 저장할 수는 있습니다.

putStringSetgetStringSet을 참조하십시오. SharedPreferences에 저장하려는 경우 배열의 모든 항목을 LinkedHashSet (고유 한 경우)로 추가 할 수 있습니다. SharedPreferences 사용법에 대한 일반적인 아이디어는 Konstantin의 대답을 참조하십시오.

관련 문제