2011-07-31 7 views
1

PreferenceActivityCheckBoxPreference을 사용하여 값을 설정합니다. 나중에 수신기 및/또는 서비스에서 그 값을 확인하고 싶습니다. findPreference() 메서드는 해당 컨텍스트에서 사용할 수 없습니다. 나도 알아,이 기본 설정 값은 SharedPreferences에 저장되지만 어쨌든 핵심은 무엇입니까? 체크 박스의 가치는 어떻게 얻을 수 있습니까?Android의 Receiver/Service에서 CheckBoxPreference 값을 가져 오는 방법은 무엇입니까?

답변

6

이 기본 설정 값은 SharedPreferences에 저장되지만 핵심은 무엇입니까?

사용자의 기본 설정 XML에 android:key의 값이 무엇이든간에.

어떻게 체크 박스의 가치를 얻을 수 있습니까?

전화 PreferenceManager.getDefaultSharedPreferences()은 다음 android:key에 사용되는 키 getBoolean()를 호출합니다 SharedPreferences 얻을 수 있습니다.

+0

나는 안드로이드의 참고 가이드가 그런 정보를 가지고 있었으면 좋겠다. – jacek

+0

@ jacek : 당신은 항상 책이나 세가지를 살 수 있었다 ... :-) – CommonsWare

0

CommonsWare의 대답에 추가 할 수있는 유일한 것은 서비스에 대해 언급 한 이후로 서비스가 Intent 추가 정보에 대해 알아야 할 기본 설정을 넣을 수 있다는 것입니다. 예를 들어 :

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference android:enabled="true" 
    android:title="@string/s_pref" android:key="@string/pref" 
    android:defaultValue="@string/d_pref"></CheckBoxPreference> 
</PreferenceScreen> 

귀하의 strings.xml의이 같은 것이다 :

<string name="pref">my.package.PREF</string> 
<string name="s_pref">Prompt</string> 
<string name="d_pref">true</string> 

귀하의 활동의에서 onCreate를 (환경 설정에서

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
Intent intent = new Intent(this, MyService.class); 
intent.putExtra("mypref", prefs.getString("mypref", "")); 
startService(intent); 
+0

친절한 인젝션 종류. – jacek

+0

귀하의 의견에 대한 응답으로 설명서, 예제 코드와 함께 실제로는 꽤 좋은 토론이 있습니다 : http://developer.android.com/guide/topics/data/data-storage.html#pref – Earl

+0

나는 ' 내장 된'CheckBoxPreference' ('CheckBoxPreference' 자체를 얻는 것을 제외하고)에서 데이터를 검색하는 것에 대해 아무것도 발견하지 못했습니다. – jacek

2

당신이 뭔가를해야 XML)는 다음과 같이됩니다.

prefs = PreferenceManager.getDefaultSharedPreferences(this); 
pref = prefs.getBoolean(getString(R.string.pref), true)); 

다른 사용자가 환경 설정을 변경 한 경우 무언가를하려면 onActivityResult()를 활동에 추가하고 startActivityForResult()를 사용하여 환경 설정 활동을 시작하십시오. 환경 설정에서 변경을 나타 내기를 원하는 결과 코드로 onActivityResult()를 호출하면 다른 getDefaultSharedPreferences()를 수행 할 수 있습니다.

는 공유 환경 설정 프레임 워크는 자동으로 당신이 할 수 있지만 당신이 작성

0

시도 환경 설정 활동에 OnPreferenceChangeListener로 할 경우, 적극적으로 자신을 다룰 필요가 없습니다 ... 데이터를 계속하여 서비스

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplication()); 

여기에 당신이 XML

if(preferences.getBoolean(your key ,true)) 
      { 

희망이 도움말에 사용했던 키를 지정합니다.