如何在运行时更改CheckBoxPreference的视图?
具体来说,我想根据用户是否选中此框来更改CheckBoxPreference摘要。
如果这是正常观点,我可以做类似的事情:
view1 = (TextView)findViewById(R.id.idView1);
view1.setText("some text");
但CheckBoxPreference没有id,所以我不知道如何获得它的“句柄”。
答案 0 :(得分:6)
我对自己的问题有一个答案。关键是在findPreference
中使用PreferenceActivity
,如下所示:
public class MyPreferenceActivity extends PreferenceActivity{
private SharedPreferences preferences;
private SharedPreferences.OnSharedPreferenceChangeListener prefListener;
private CheckBoxPreference pref;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
pref = (CheckBoxPreference) findPreference(res.getString(R.string.keyAccount));
pref.setSummary("something");
//-- preference change listener
prefListener = new SharedPreferences.OnSharedPreferenceChangeListener(){
public void onSharedPreferenceChanged(SharedPreferences prefs, String key){
if (key.equals(somekey)){
pref.setSummary("something new");
}
}
};
preferences.registerOnSharedPreferenceChangeListener(prefListener);
}
这是经过测试和运作的。
答案 1 :(得分:1)
您应该使用(在XML布局文件中):
android:summaryOff
android:summaryOn
答案 2 :(得分:-2)
您可以使用xml中的android:id
将ID设置为CheckBoxPreference,如下面的代码
<CheckBoxPreference
android:key="pref_boot_startup"
android:title="Auto start"
android:defaultValue="true"
android:id="@+id/my_CheckBoxPref"
/>
要检索,您可以使用
CheckBoxPreference check = (CheckBoxPreference)findViewById(R.id.my_CheckBoxPref);