2011-10-09 2 views
7

내 응용 프로그램 내에 Activities에 걸쳐 내 데이터를 저장하기 위해 SharedPreferences을 사용하고 있습니다. 나는 이런 식으로 액세스 할 수 있습니다 :PreferenceActivity가 내 SharedPreferences를 처리하도록 강요하는 방법?

SharedPreferences mSharedPreferences = getSharedPreferences("MyPrefs", 0); 

나는 PreferenceActivity 그래서 사용자가 그것을 통해 값을 변경할 수 있습니다 구현했지만/데이터를 읽거나 쓸 일이 없다 "MyPrefs"이에로 :

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

나는 조금은 예상외다. 내 "MyPrefs"환경 설정을 처리하기 위해 PreferenceActivity을 강제 할 수 있습니까? 그리고 단일 응용 프로그램 내에서 여러 가지 기본 설정을 갖는 것은 무엇입니까? 고맙습니다.

+1

을했다 : http://stackoverflow.com/questions/7045417/android-custom-sharedpreferences-implementation-to-persist-to-database – aromero

답변

0

은 그래서 당신이 PreferenceActivity를 사용하여 계획되지 않은로서, 괜찮아요이

같은 그것에 액세스 할 수 있습니다. 사용자가

아차 통해 값을 변경할 수 있도록

나는 PreferenceActivity를 구현했습니다.

또한 활동/서비스/기타가 아닌 Application을 사용해야하는 구체적인 이유가없는 한 getApplicationContext()을 제거하십시오. 필요가있을 때만 Application 개체를 사용하고 왜해야하는지 알 수 있습니다.

"MyPrefs"환경 설정을 PreferenceActivity가 처리하도록 할 수 있습니까?

쉽지 않음. 자신의 SharedPreferences 파일을 만들 구체적인 이유가 없으면 기본 파일을 사용합니다.

단일 응용 프로그램 내에서 여러 가지 기본 설정을 갖는 것은 무엇입니까?

당신은 재사용 가능한 라이브러리 또는 구성 요소가 SharedPreferences에서 물건을 저장할해야 할 수도 있습니다, 그것은 너무 엉망 호스팅 응용 프로그램에서 어떤 설정을하지 자체 파일이있을 수 있습니다. 즉, 여러 기본 설정 파일은 일반적으로 필요하지 않습니다.

+11

'PreferenceActivity'의'getPreferenceManager() .setSharedPreferencesName()'트릭을 수행합니다 – xverges

4

환경 설정 활동과 동일한 PreferenceManager.getDefaultSharedPreferences (컨텍스트)를 사방에 사용하는 것이 좋습니다. 그러나 현재 설정을 고수해야하는 경우 hacky 솔루션 (하지만 내가 아는 유일한 솔루션)은 getSharedPreferences를 재정 의하여 원하는 것을 반환하는 것입니다.

@Override 
public SharedPreferences getSharedPreferences(String name, int mode) { 
    return super.getSharedPreferences("MyPrefs", mode); 
} 
14

가능하고 간단합니다. 이것은이 읽기 나를 위해

public class SettingsActivity extends PreferenceActivity { 
    @SuppressWarnings("deprecation") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getPreferenceManager().setSharedPreferencesName("MyPrefs"); 
     //getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_WRITEABLE); 
    addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+0

나를 위해 일했습니다 ... 감사합니다! – aap

+0

정답입니다.이 기술은'PreferenceFragment'를 사용하는 경우에도 작동합니다 –

+0

이것은 허용 된 대답이어야합니다. – Jay

관련 문제