PreferenceActivity
에 CheckBoxPreference
을 사용하여 값을 설정합니다. 나중에 수신기 및/또는 서비스에서 그 값을 확인하고 싶습니다. findPreference()
메서드는 해당 컨텍스트에서 사용할 수 없습니다. 나도 알아,이 기본 설정 값은 SharedPreferences
에 저장되지만 어쨌든 핵심은 무엇입니까? 체크 박스의 가치는 어떻게 얻을 수 있습니까?Android의 Receiver/Service에서 CheckBoxPreference 값을 가져 오는 방법은 무엇입니까?
답변
이 기본 설정 값은 SharedPreferences에 저장되지만 핵심은 무엇입니까?
사용자의 기본 설정 XML에 android:key
의 값이 무엇이든간에.
어떻게 체크 박스의 가치를 얻을 수 있습니까?
전화 PreferenceManager.getDefaultSharedPreferences()
은 다음 android:key
에 사용되는 키 getBoolean()
를 호출합니다 SharedPreferences
얻을 수 있습니다.
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);
당신이 뭔가를해야 XML)는 다음과 같이됩니다.
prefs = PreferenceManager.getDefaultSharedPreferences(this);
pref = prefs.getBoolean(getString(R.string.pref), true));
다른 사용자가 환경 설정을 변경 한 경우 무언가를하려면 onActivityResult()를 활동에 추가하고 startActivityForResult()를 사용하여 환경 설정 활동을 시작하십시오. 환경 설정에서 변경을 나타 내기를 원하는 결과 코드로 onActivityResult()를 호출하면 다른 getDefaultSharedPreferences()를 수행 할 수 있습니다.
는 공유 환경 설정 프레임 워크는 자동으로 당신이 할 수 있지만 당신이 작성
시도 환경 설정 활동에 OnPreferenceChangeListener로 할 경우, 적극적으로 자신을 다룰 필요가 없습니다 ... 데이터를 계속하여 서비스
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplication());
여기에 당신이 XML
if(preferences.getBoolean(your key ,true))
{
희망이 도움말에 사용했던 키를 지정합니다.
나는 안드로이드의 참고 가이드가 그런 정보를 가지고 있었으면 좋겠다. – jacek
@ jacek : 당신은 항상 책이나 세가지를 살 수 있었다 ... :-) – CommonsWare